stm32f4discovery 相关问题

STM的评估板。它基于STM32F407VGT6,包括ST-LINK / V2嵌入式调试工具,两个ST MEMS,数字加速度计和数字麦克风,一个带集成D类扬声器驱动器的音频DAC,LED和按钮以及USB OTG micro-AB连接器。

PIXY相机模块:如何获取图像数据?

我想知道是否有 pixy 相机模块的数据表,官方 wiki 页面没有多大价值。对于初学者来说,我有兴趣从这个相机模块获取图像,在维基页面中......

回答 1 投票 0

有人可以向我解释一下吗,我很困惑

这是代码: #include“stm32f4xx.h” #定义BASE_ADDRESS 0x2000000 #定义偏移量0x500 #定义偏移量B 0x506 int 主函数(无效) { uint8_t *ptr,索引; uint16_t 测试; 指针 = (

回答 1 投票 0

STM32 中断在特定优先级设置下无法正确触发

我正在开发一个使用 STM32 微控制器的项目,其中我需要处理由引脚 PE2 和 PC11 上的 PWM 信号生成的中断。尽管配置了中断并确保全局中断...

回答 1 投票 0

stm32f3发现usart没有发送

这是我用 Rust 编写的简单寄存器级程序。在阅读了许多用 C 编写的博客后,我尝试像他们在 C 中为发现板所做的那样配置寄存器,但不幸的是......

回答 1 投票 0

STM32F4 发现

我有STM32F4 Discovery。我使用 IAR 嵌入式工作台。我是这个套件的新手。我想测量距离。我的代码没有给出错误。距离始终为零。可能是什么错误?请...

回答 2 投票 0

STM32通过UART传输数据

我有一块stm32f407G-DISC1和一块NUCLEO-F420ZI开发板。我想从 f407 的内部加速度计收集数据并通过 UART 将它们传输到 NUCLEO 板。我收集并发送...

回答 1 投票 0

STM32 SPI从机模式无法正常传输

我使用STM32G030C8T6作为SPI(从设备),它从Raspberry pi(主设备)接收字符,接收工作完美!没有问题,但是当我尝试从

回答 2 投票 0

想要通过 DMA 通过 USB OTG HS 接收数据

我正在尝试在 STM32F4 Discovery 板上通过 DMA 通过 USB OTG HS 接收数据。我已经启用了内部 IP DMA,但我不知道如何用它接收数据。我已经尝试修改...

回答 1 投票 0

如何在stm32-discovery上显示时间

我最近一直在尝试STM32-DISCOVERY,但我不确定如何开始使用该板的应用程序。 我想在stm32的显示屏上显示RTC的时间。 怎么...

回答 2 投票 0

stm32f0串口编程

我正在尝试让usart在我的stm32f0-discovery上工作,但现在我发现有关这方面的文档有点“缺乏”,所以有人有任何usart为

回答 1 投票 0

为什么我的微处理器无法读取模拟电位计值

我正在编写一个stm32f401cb代码,它将根据模拟到数字转换的电位计值来控制LED。我的pa2已被选择为模拟输入。我的pb2已被选择为通用

回答 1 投票 0

如何解决这个杂散问题[已关闭]

我正在使用atollic对stm32进行编程,但是当我以0xXXXXXXXXX的形式写入时,atollic不接受十六进制数字。 #include“stm32f4xx.h” 无效gpioab_config(无效){ RCC->AHB1ENR=0x0000...

回答 1 投票 0

STM32 模拟输出

我正在研究stm32的模拟输出。 STM32F407VG用户手册和DAC手册说STM32可以从DAC外设提供模拟输出。 那个模拟输出真的是ANALOG吗?

回答 3 投票 0

STM32板被认可为大容量存储设备

我正在尝试对 STM32F407VET6 板进行编程,它在设备管理器中被识别为大容量存储设备。我尝试将驱动程序更改为 libusb-win32,但现在看起来像这样: 之前和之后

回答 1 投票 0

使用寄存器的STM32F401xx I2C驱动程序

我想在proteus中使用两个STM32F401xx MCU。其一为主人,其二为奴隶。 这是我给主人的代码: 使用(MicroC Pro For Arm)程序。 #包括 我想在STM32F401xx MCU中使用两个proteus。其中一个是成为 master,另一个是成为 slave。 这是我给大师的代码: 使用 (MicroC Pro For Arm) 程序。 #include <stdint.h> #include <stdio.h> uint8_t temp=0; void begin(uint8_t addr); void end(void); void Write (uint8_t dat); void main() { // Enable the I2C CLOCK and GPIO CLOCK RCC_APB1ENR |= (1<<21); // enable I2C CLOCK RCC_AHB1ENR |= (1<<1); // Enable GPIOB CLOCK // Configure the I2C PINs for ALternate Functions //PB8 and PB9 are connected to I2C1_SCL and I2C1_SDA GPIOB_MODER |= (2<<16) | (2<<18); GPIOB_OTYPER |= (1<<8) | (1<<9); GPIOB_OSPEEDR |= (3<<16) | (3<<18); GPIOB_PUPDR |= (1<<16) | (1<<18); GPIOB_AFRH |= (4<<0) | (4<<4); begin(0x08); Write(0x01); end(); } void begin(uint8_t addr){ //join I2C as a master mode //Generate a start condition I2C1_CR1 |= (1<<10); // Enable the ACK I2C1_CR1 |= (1<<8); // Generate START while (!(I2C1_SR1 & (1<<0))); // Wait for SB bit to set to 1 //Send the Slave Address to the DR Register I2C1_DR = addr; // send the address while (!(I2C1_SR1 & (1<<1))); // temp = I2C1_SR1 | I2C1_SR2; // read SR1 and SR2 to clear the ADDR bit // Reset the I2C I2C1_CR1 |= (1<<15); //I2C Peripheral under reset state -->page.493 manual I2C1_CR1 &= ~(1<<15); //I2C Peripheral not under reset -->page.493 manual // Program the peripheral input clock in I2C_CR2 Register in order to generate correct timings I2C1_CR2 |= (42 <<0); // PCLK1 FREQUENCY in MHz I2C1_CCR = 210<<0; // Configure the clock control registers I2C1_TRISE = 43; // Configure the rise time register I2C1_CR1 |= (1<<0); // Enable I2C } void end(void) { I2C1_CR1 |= (1<<9);//stop generation // Wait until the STOP condition is complete while (I2C1_SR2 & (1<<0)); //Cleared by hardware after detecting a Stop condition on the bus // Clear the STOP bit I2C1_CR1 &= ~(1<<9); } void Write (uint8_t dat) { while (!(I2C1_SR1 & (1<<7))); // wait for TXE bit to set I2C1_DR = dat ; // wait for BTF bit to set while (!(I2C1_SR1 & (1<<2))); //waiting while BTF=0 but when BTF=1; Data byte transfer succeeded } 从机代码: #include <stdint.h> #include <stdio.h> uint8_t temp=0; uint8_t state =0x00; void begin(uint8_t addr); void end(void); uint8_t Read (); void main() { RCC_APB1ENR |= (1<<21); // enable I2C CLOCK - RCC_AHB1ENR |= (1<<1); // Enable GPIOB CLOCK RCC_AHB1ENR |= (1<<0); // Enable GPIOA CLOCK GPIOA_MODER |=(1<<0); //set pin 0 as output // Configure the I2C PINs for ALternate Functions //PB8 and PB9 are connected to I2C1_SCL and I2C1_SDA GPIOB_MODER |= (2<<16) | (2<<18); GPIOB_OTYPER |= (1<<8) | (1<<9); GPIOB_OSPEEDR |= (3<<16) | (3<<18); GPIOB_PUPDR |= (1<<16) | (1<<18); GPIOB_AFRH |= (4<<0) | (4<<4); begin(0x08); state = Read(); end(); if (state == 0x01){ GPIOA_ODR |=(1<<0);//set 1 for pin 0 } } void begin(uint8_t addr){ //join I2C bus as a slave mode I2C1_CR2 |= (42<<0); // PCLK1 FREQUENCY in MHz I2C1_OAR1 = addr;//own address interface I2C1_CR1 |= (1<<0); // Enable I2C I2C1_CR1 |= (1<<10); // Enable the ACK ,indicate that a byte is received } void end(void) { I2C1_CR1 |= (1<<9);//stop generation // Wait until the STOP condition is complete while (I2C1_SR2 & (1<<0)); //Cleared by hardware after detecting a Stop condition on the bus // Clear the STOP bit I2C1_CR1 &= ~(1<<9); } uint8_t Read (){ uint8_t receivedData = 0; I2C1_CR1 &= ~(1<<10); // clear the ACK bit temp = I2C1_SR1 | I2C1_SR2; // read SR1 and SR2 to clear the ADDR bit.... EV6 condition I2C1_CR1 |= (1<<9); // Stop I2C while (!(I2C1_SR1 & (1<<6))); // wait for RxNE to set receivedData = I2C1_DR; // Read the data from the DATA REGISTER return receivedData; } 我尝试在Proteus上进行模拟,但是没有什么可以改变的,led still off。所以,我想知道如何在Proteus上制作simulation,如果我提供的代码有任何问题,我按照STM32F401xx的datasheet和manual来编写这个简单的驱动程序。 proteus 两个 STM32F401xx MCU 的连接: 你的主人的“开始”功能做了一些奇怪的事情。 I2C1_TRISE = 43; after 设置起始位怎么样?您在配置之前尝试使用 I2C。在使用任何应答或起始位之前,TRISE 必须是对 I2C 执行的首要操作之一。整个函数以奇怪的顺序执行操作。 寄存器中的“起始位”不启用起始位功能。当您写入时,它实际上会尝试立即发送一个起始位,并且在您的代码中,它会在您设置 TRISE 之前甚至在启用 I2C 外设之前发生。因此,行为是不可预测的。 我检查了F401的外设,它与F103的外设一模一样,只是F401多了一个用于模拟和数字噪声滤波器控制的寄存器。除此之外,它们是相同的并且完美地映射到另一个。 (根据勘误表,F401 不存在与 F103 相同的带有滤波器故障的硅缺陷)。 以下是我使用该外设的操作顺序,跳过了明显的 GPIO 备用功能设置,因此此处仅注册 I2C。这是 I2C 主设备配置,但一般设置是相同的,从设备配置和主设备配置之间的区别在于以下必要步骤: 配置GPIO,使能I2C时钟。 将CR2中的FREQ配置为APBx时钟频率(例如STM32运行在64MHz时为32,因为I2C的APBx运行在32000000Hz) 在CCR中配置时钟周期倍频器 配置 TRISE 的上升/下降时间 现在,如果您写入起始位,您可以将数据加载到 DR 并将其作为主设备发送。到目前为止,您不需要向 Start 位写入任何内容,也不需要向 ACK 位写入任何内容,这些位用于正在进行的通信,而不是用于配置。 对于从机,您可以进行类似的设置,但显然还需要配置其从机地址。 我觉得你太着急了。从主 MCU 开始,确保您首先可以在 I2C 线路上看到一些内容。

回答 1 投票 0

STM32F 中断返回地址

我想知道STM32F中中断的返回地址,尤其是arm处理器。 在正常函数中,返回地址保存在Link Register中,但是在中断中,我发现Link

回答 1 投票 0

stm32 spi全双工从机模式

我正在研究stm32f0308-discovery和jetson tx2之间的spi通信。 Jetson是master,stm32应该是slave。 (我不知道如何,但如果可能的话,stm32也可能是master。)我的问题是我...

回答 4 投票 0

网络摄像头与stm32接口

我想使用 STM32F4 微控制器接收视频流,然后使用 rtsp 协议通过以太网进行流式传输。 我需要你们告诉我哪种电路最适合接口......

回答 3 投票 0

STM32F469I-DISCO LCD - 我的应用程序无法打开

我开始为STM32F469I-DISCO开发图形应用程序,但无法打开LCD。 我正在使用 STM32CubeIDE,从以下步骤开始: 新项目 板选择器 现在...

回答 1 投票 0

STM32F469I-DISCO LCD - 我的应用程序无法打开

我开始为STM32F469I-DISCO开发图形应用程序,但无法打开LCD。 我正在使用 STM32CubeIDE,从以下步骤开始: 新项目 板选择器 现在...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.