前言
本文是嵌入式菜鸡做点小实验来熟悉CubeMX、HAL库的简单实验报告。
一、使用CubeMX生成代码点亮LED灯
1.使用CubeMX生成代码
打开CubeMX,点击ACCESS TO MCU SELECTOR创建新项目
在Part Number处选择芯片,这里以STM32F103C8T6为例,然后在中间会出现一列芯片的信息,点击之后再点击Start Project
点击System Core,进入里面的SYS,在debug那里选择Serial Wire
然后配置时钟了,进入上面的RCC,有两个时钟,一个是HES和LSE,我们要用是GPIO接口,而这些接口都在APB2里,所以点击时钟架构,可以看见APB2总线的时钟由HES控制,同时在这个界面得把PLLCLK选上
然后回到之前的Pinout&Configuration界面将HES那里设为Crystal/Ceramic Resonator。
接下来就是设置输出寄存器,进入GPIO界面,点击相应的引脚,选择GPIO_Output
我这里一共选了三个,分别是PA4,PB4,PC15
依次选择PA4,PB4,PC14,将其配置为下图所示
在Project Manager–>Project下,配置好自己的项目名和路径,然后IDE那项改为MDK-ARM,版本根据自己的需求选择
注意:
在创建文件位置时,不能不能不能有中文的路径文件名,包括要放置的目录下 ,所有都创建为英文,否则后面生成的文件不全。
进入Code Generate界面,勾选生成初始化.c/.h文件
最后点击GENERATE CODE,生成代码
2.生成芯片可执行的hex文件
进入刚刚选择的路径,打开MDK-ARM子文件夹,通过keil打开刚刚生成的项目
通过目录找到并打开main.c文件,找到主函数int main(void)那一部分
注意:
如果要在STM32CubeMX生成的工程中添加代码,要在提示 /* USER CODE BEGIN* /和/* USER CODE END*/之间添加代码,这样STM32CubeMX重新生成代码时才不会将自己添加的代码删除掉。此外,注意使用CubeMX配置生成的工程中的注释最好不要随便删除掉。
在while循环的/* USER CODE BEGIN 3 /和/ USER CODE END 3 */之间插入以下代码:
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);//PA4亮灯
HAL_Delay(500);//延时0.5s
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);//PA4熄灯
HAL_Delay(500);//延时0.5s
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_RESET);//PB4亮灯
HAL_Delay(500);//延时0.5s
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_SET);//PB4熄灯
HAL_Delay(500);//延时0.5s
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_RESET);//PC15亮灯
HAL_Delay(500);//延时0.5s
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_SET);//PC15熄灯
HAL_Delay(500);//延时0.5s
点击魔法棒,勾选生成hex文件。
编译运行程序,生成hex文件,在与工程名相同的子文件夹里。
3.程序运行:亮灯
使用mcuisp烧录程序,具体过程可以见:STM32串口下载程序
具体连线可以查看:STM32F103寄存器方式点亮LED流水灯(软硬结合初尝试)根据代码有一些改变。
动态效果:
注意:
如果确定代码没问题,接线也正确,但是最小系统板并没有正确执行程序,可以试试将BOOT0引脚在不断电的情况下从1换到0,再按一下复位键,程序就可以正常执行。
二、示波器显示看波形确定代码正误
在没有示波器条件下,可以使用MDK5的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点,因此可以用MDK5的软件仿真观察3个GPIO端口的输出波形。
点击魔法棒,设置target,外部晶振为8MHz,这个参数对仿真对错很重要。
设置debug如图所示
设置完成后,编译运行;
选择逻辑分析仪Logic Analyer;
选择要观察的引脚,点击Setup Logic Analyzer
添加要观察的引脚,详细设置方法可见:STM32F103寄存器方式点亮LED流水灯(软硬结合初尝试)
运行程序:
观察波形,
三、总结
CubeMX确实很强大,比我之前写的文章(自己写代码、计算地址)要方便很多很多倍。果然,利用好工具对提高效率很有用处。