1.CubMX为什么方便
其可以通过图形化方式定义引脚功能,生成部分代码,给与开发人员提示
重配置后,本身写好的代码也会保留。
2.CubeMX为什么要定义引脚功能
32中引脚都有很多功能,
如图,PA0和PA15都可以做为TIM2_CH1的输出IO,但是也只能一个引脚,通过CubeMX配置后,你就不能重复定义TIM2_CH1的输出了,防止错误。
3.小坑
用了I2C1的初始化后,TIM2就产生不了PWM波,有文章是这样说的I2C初始化用了一些引脚作为I2C初始化,所以你就不能用这个IO口了,但是CubeMX没有给这个提示(还是不够优化,有Bug)。stm32 PB5的TIM3_CH2与IIC1冲突_伍_工的博客-CSDN博客
之后通过实际测试发现,上官2号板子,不同次烧录代码和插入IO引脚后,I2C对IO口有不用影响,猜想是板子设计缺陷。
4.开发流程
1.架构项目的功能
2.各功能分配IO
3.编写各功能API
3.整合API
先要有个整体架构。不能慢慢添功能,这样IO分配可能不合理,需要重新配置,重来。