用STM32CubeMx生成初始化代码工程是趋势。大家可能有感觉,用了标准库不想用寄存器;同样,我相信用了CubeMx不想用标准库。
STM32CubeMx是基于HAL库的。解压STM32Cube固件包,里面不仅有HAL库外设驱动文件,还有如Lwip、FreeRTOS、FatFs等第三方库文件;
更重要的是,里面还有Projects文件夹,包含各外设Examples和高级Applications,是我们学习STM32的重要参考例程。
STM32CubeMx还能生成工程配置信息文件,如引脚定义等。相信用了STM32CubeMx,我们再也不用对照原理图列引脚定义等信息了。
HAL库包含各外设的完整驱动,不用我们自己再重写。具体怎么用可参考STM32Cube固件包里的Projects文件夹。
闲话少叙,言归正传。
我发现,用IO模拟IIC实验在我的开发板上要把Keil优化等级设为-0才能正常通信,设为-3则不能正常通信。
这一情况耗费了我不少时间。
由于不能解决优化等级-3不能正常通信的问题,我就看STM32Cube固件包里的Projects文件夹下的例程,
具体是...stm32cube_fw_f4_v1130STM32Cube_FW_F4_V1.13.0ProjectsSTM324xG_EVALExamplesBSP,
里面有一个“stm324xg_eval.c”文件,有IIC和外部EEPROM通讯的相关函数。
我把它们复制过来,重新建立工程测试。
刚开始一直通信不成功,我就和原子哥的例程对照,发现 AT24CXX Write 的末尾要延时(delay_ms(10);)。我就加上延时再试,
。。。竟然成功了。。。
具体工程见附件!希望对大家有益!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
CubeMx只是工具, 人 才是主体。要想用好每个外设,还是要看 参考手册。
不过,CubeMx确实很方便我们开发,这点还是不得不承认,简直是开发神器。
一周热门 更多>