使用STM32CubeMX创建STM32工程(串口,硬件IIC配置)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
最近教研室的项目需要使用STM32做处理器,对环境数据进行采集处理,在拿到板子后,需要根据单片机具体型号(STM32F411CEU6)创建工程,再进行上层应用的开发。因为以前都是用的F1系列的开发板,用的时候直接在官方例程上进行修改就可以,这次使用全新的芯片,需要自己使用STM32CubeMX进行底层硬件的配置。
一、STM32CubeMX是什么?
STM32CubeMX是一款十分简洁易用的图形化MCU开发工具,通过在该软件上选择处理器型号,并进行相关硬件接口的配置,可以轻松的生成对应的初始化代码。
二、使用步骤
1.新建工程
点击file,选择New Project :
2.选择芯片型号
在左上角输入芯片型号,在右下出现的结果中,点击具体型号:
这样,工程算是创建成功了,进入mcu硬件资源配置的界面,分别由四大部分组成:
1.Pinout & Configuration:主要是IO功能设置,串口,硬件SPI,IIC等外设资源的配置。
2.Clock Configuration:时钟配置。
3.Project Manager:主要是设置生成代码的ide,代码管理等,在第5小节详细介绍。
4.Tools:可以查看mcu的相关参数,引脚图等。
3.时钟配置
总所周知,时钟是mcu的心跳,只有正确配置好时钟,程序才可以正常运行。
如果使用外部时钟源的话,需要先在引脚配置中设置好RCC。
在高速外部时钟中,选择晶振,可以看到右图中对应引脚变绿,说明配置成功
在输入频率处,输入使用的晶振频率,可以直接在MCU工作频率处输入想要的主频,软件会自动在倍频设置处生成相应参数,最后在分频设置中选择自己想要的外设频率即可。
4.外设配置
外设配置可以分别以字母A-Z与种类的差别排序显示:
因为我使用的板子主要是采集传感器数据,并通过串口进行发送,传感器通信使用的是硬件IIC,因此只需要初始化对应的IIC接口与串口即可。
iic初始化:在I2C1中选择工作模式为I2C,可以看到对应引脚变绿,配置成功
SMBus-Alert-mode与SMBus-two-wire-Interface是SMBUS协议的两种工作模式
串口初始化:
我们使用串口对数据进行发送,并对上位机发送的指令进行解析,因此选用异步收发模式即可,其他选项解释如下:
Asynchronous:异步收发
Single Wire (Half-Duplex):单线半双工,针对某些三线制串口(只有一根信号线),信号端需要来回切换输入输出模式。
Multiprocessor Communication:多处理器通信。
lrDA、LIN、SmartCard:局域互连网络LIN、智能卡(SmartCard)协议、lrDA(红外线数据协会) SIR ENDEC规范。
5.项目管理
STM32CubeMX可以根据你使用的IDE,生成对应的工程甚至makefile(注意路径不要有中文)。后续如果你需要更换开发环境,也不用重头配置工程,在STM32CubeMX工程,重新选择ide进行生成,就会在原来的位置,生成新的ide打开方式。
选择生成代码要求,点击 generate code,便可以在指定位置生成项目工程,
在AdvancedSettings 中选择使用的外设,可以选择使用HAL库或者LL库进行初始化或其他操作。
可以看到生成的代码已经对外设进行了配置,我们只需要进行下一步的应用开发即可。
总结
STM32CubeMX使用起来还是比较方便的,可以快速帮助我们对陌生的处理器建立底层工程,对于不常进行底层开发的同学相当友好。需要注意的是,STM32CubeMX只可以使用HAL库和LL库,暂不支持标准库代码生成。