大家好,又见面了,我是你们的朋友全栈君。
STM32CubeMX是意法半导体推出的图形化配置工具,通过傻瓜化的操作便能实现相关配置,最终能够生成C语言代码,支持多种工具链,比如MDK、IAR For ARM、TrueStudio等。尤其值得一提的是,TrueStudio已经被ST收购,提供完全免费的版本,并且,通过插件式安装,可以将STM32CubeMX集成在一个IDE,使用十分方便。如下图:
图1 TrueStudio中的STM32CubeMX
接下来将分步骤介绍使用STM32CubmeMX及MDK、STM32CubmeMX及TrueStudio进行STM32程序设计。
一、新建工程(方式1 使用ST官方的开发板)
打开STM32CubmeMX,在主界面选择New Project,在弹出来的对话框中可以选择基于芯片创建工程还是基于特定开发板创建工程,如图2。
图2 芯片或者开发板选择
此处,我们选择Board Selector,并进一步选择我使用的开发板NUCLEO-F401RE,选中后如图3所示。
图3 开发板或者芯片选择
双击该开发板选项,会提示是否采用默认模式初始化所有外设,我选择YES,结果如图4所示。
图中可见,已经完成了初步的配置,并且用不同的颜色进行标识。在左边树状图中,如果该外设能够正常使用,则为绿色,比如本例中的USART2,如果是部分冲突,则会以黄色警告图标
的方式进行提醒,比如,此处的ADC1。将鼠标移至黄色叹号处,可以看到图5所示文字。告诉开发人员,ADC1与PA5以及USART2的当前配置冲突了,因为我们现在将PA5配置为输出、USART2配置为异步串行通信了。点开ADC1前面的加号,则能更清晰看到具体冲突的ADC通道,如图6所示。
图5 ADC1警告
图6 ADC1具体冲突的地方
同样的,我们将鼠标光标放在
上,可以看到,图7所示提示。告诉我们I2C2不可用,因为PB3脚已经映射为SYS_JTDO-SWO。
图7 冲突导致某功能不能使用
由于本例使用了默认配置进行初始化,我们需要做的工作就少了许多,在下一章节中将介绍更接近于实际应用的工程创建方式。
二、项目设置
与很多软件一样,STM32CubeMX也可以进行工程的设置,通过菜单Project->Settings便可进入图8所示工程设置对话框。
图8 Project Settings
点击Code Generator,进行进一步配置,如图9所示。
图9 代码生成设置
如果后续不需要新增其他外设,建议Copy necessary,如果后续需要新增其他外设又可能不再用STM32CubeMX,建议Copy all,如果不太会复制到其他地方或者大家的库都放在同一个路径,可以选用Reference,比较节约硬盘空间。
三、修改代码
所有自己编写的代码请放在/* USER CODE BEGIN XXX */ /* USER CODE END XXX */之间,比如我们需要新增加的头文件,放在/* USER CODE BEGIN Includes */ /* USER CODE END Includes */之间,需要增加的全局变量放在/* USER CODE BEGIN PV */ /* USER CODE END PV */之间等。
图10 自己编写代码的区域
本例实现LED灯LD2以1Hz频率连续闪烁,在while(1)中增加如下代码即可。
代码语言:javascript复制 /* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_GPIO_TogglePin(LD2_GPIO_Port,LD2_Pin);
HAL_Delay(500);
}
/* USER CODE END 3 */
四、配置下载工具
在工程文件右键,进行相关配置,如图11所示。
图11 仿真工具配置
一切OK,编译
,下载
,便可验收成果了,祝君顺利!欢迎交流:
本例示例代码
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135576.html原文链接:https://javaforall.cn