基于CubeMx的IIC例程

2019-07-20 19:13发布

用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);)。我就加上延时再试,
。。。竟然成功了。。。


具体工程见附件!希望对大家有益!


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
龙之谷
1楼-- · 2019-07-21 00:00
 精彩回答 2  元偷偷看……
mupb
2楼-- · 2019-07-21 00:28
表示对CubeMX无感啊,本来我们放弃了操作寄存器去使用库函数(标准库 | HAL库),就对底层了解不深刻了;如果再放弃初始化库函数而用CubeMX替代了,那么本应对底层了解十分透彻的嵌入式工程师,就对底层的概念很模糊,这样也会造成一种依赖性。
我感觉:cube是在实际应用中快捷了很多,但是我们在使用高级软件的同时,也要兼顾底层知识的摄取,这样才能在嵌入式这个行业立于不败之地。继而转DSP、FPGA等都是很有帮助的,互勉,继续学习STM32中。。。
kepuple
3楼-- · 2019-07-21 01:50
请问下楼主你在CubeMX建工程时怎么添加AT2402元件的
百计无尊
4楼-- · 2019-07-21 02:24
 精彩回答 2  元偷偷看……
百计无尊
5楼-- · 2019-07-21 02:26
kepuple 发表于 2016-10-25 08:57
请问下楼主你在CubeMX建工程时怎么添加AT2402元件的

CubeMx生成的工程里可以添加文件夹,文件,路径的,和我们用其他方式的工程的操作方式一样
百计无尊
6楼-- · 2019-07-21 05:38
mupb 发表于 2016-10-24 18:01
表示对CubeMX无感啊,本来我们放弃了操作寄存器去使用库函数(标准库 | HAL库),就对底层了解不深刻了;如 ...

CubeMx只是工具, 人     才是主体。要想用好每个外设,还是要看  参考手册。
不过,CubeMx确实很方便我们开发,这点还是不得不承认,简直是开发神器。

一周热门 更多>