本帖最后由 xuchaopan 于 2020-10-30 15:38 编辑
一、 介绍 STM32Fxx系列单片机在CubeMX软件的加持下,大大的提高了开发效率并缩短前期开发时间。 CubeMX软件支持意法半导体的所有32位单片机,它可以帮助开发人员新建项目、设置芯片时钟、配置IO功能、定时器、设置诸如SPI/UART/I2C等等硬件端口,并且可对所有的基本参数进行配置,并且CubeMX还可以生成FreeRTOS嵌入式系统。 CubeMX支持Keil、IAR等主流程序编译环境的工程生产,生成的文件可以用编译软件直接打开并编译。 CubeMX包含了STM单片机的HAL库,会根据开发人员配置的功能自动加载HAL库文件。 二、 新建工程 1. 打开软件,并开始工程及芯片选择,如下图 点击第一个选项,从MCU选择开始。 2. 选择芯片,如下图 在搜索框中输入芯片型号后,在右下侧会出现该型号包含的芯片及封装,选择自己使用的封装后双击,则会进入下面这个界面,此时就可以开始配置芯片功能等参数了。 3. 芯片时钟设置 我们首先对芯片的时钟源进行配置,如下图 按照序号选项,在③处选择晶体振荡器。然后按照下图设置 按照序号顺序进行操作,在④处设置想要的系统时钟频率。 4. 工程保存,如下图 按照序号顺序操作,在②处输入工程名,③处选择工程保存的路径,④处选择要使用的编译软件及版本。然后如下图配置选择库和生产文件属性。 5. 生成工程 如下图,点击①后会弹出②处的进度条,这时等待其完成即可。 完成后会弹出下图的选项,这时可以选择直接打开工程。 6. 开始编写程序 如图,这就是CubeMX生产的一个最基本的工程,main.c在User文件夹下,之后就可以在main函数下开始编写程序,在添加程序时,请需注意:如上图的方框内的备注,添加的代码需要在BEGIN 之后 END之前,这样在下次CubeMX再生成文件的时候就不会被删除,否则CubeMX会将你写的代码全部删除,这样就功亏一篑了。 三、 GPIO的使用 1. 配置一个输出IO,这里用PA0作演示,如下图 如图,按序号顺序选择①处,我们回到pinout & configuration,在④处用电机PA0这个引脚后会弹出右边的功能选项表,这里就能看出这个IO端口支持的功能,这里我们选择Output(输出功能)。然后可以对这个IO口直接配置。 上图中①处选择要设置的IO口,在下面有5个选项,可以对其进行配置, 在⑥处可以数额如IO的名称,在生成后的main.h,就能找到这个名称的IO口,之后对其进行调用即可。 2. 程序编写 按上图顺序打开main.h,在④处添加控制宏,之后在main函数下添加IO控制程序即可,如下图 由①处可见,CubeMX再生成工程后,会自动添加GPIO初始化代码,不用开发人员自己再去做初始化,CubeMX会根据在软件上的配置进行代码生成, 在②处添加控制代码即可。 四、 定时器的使用 1. 设置一个定时器,定时时间为1ms,软件上配置如下图: 这里是启用的Tim2作为定时器源,上图按照顺序进行选项设置, 图中第④处为设置定时器分频系数,第⑤处设置的是计数器周期,第⑥处启用自动重装。 2. 然后在后面选项打开定时器中断,如下图: 3. 程序编写,在程序上打开定时,代码(HAL_TIM_Base_Start(&htim2);)。然后在stm32f1xx_it.c里面找到定时器2的中断服务器程序(TIM2_IRQHandler),在里面添加定时器中断标志即可。 五、 PWM的使用 1. 举例配置一个频率1kHz的PWM脉冲输出信号,如下图: 按照上图顺序选择,第③处为PWM输出通道选择,这里选择后,在芯片IO图中第④处可以看到就自动生成了一个PWM-CH1端口。然后⑤、⑥处设置分频系数、定时器值,⑦处设置装填的初始值,其占空比就是⑥/⑦的数值,也就是二分之一。 2. 程序编写:同样使用库函数(HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);)打开定时器3的第1路PWM输出;然后可以通过库函数修改PWM占空比(__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, 500);)红字就是PWM输出占空比的比例值。 六、 SPI的使用 待补充 七、 I2C的使用 待补充 八、 UART的使用 待补充 九、 ADC的使用 待补充 十、 FreeRTOS的使用 待补充 |