STM32CUBEMX_点亮LED_LED闪烁

实验1:点亮LED
实验2:按键控制LED
实验3:外部中断检测按键
实验4:扩展芯片检测按键
实验5:定时器实现LED闪烁
实验6:基于PWM的呼吸灯
实验7:检测输入的PWM频率和脉宽
实验8:串口的输入和输出
实验9:串口使用PRINTF函数
实验10:SPI接口操作片外FLASH
实验11:SPI接口操作TF卡
实验12:IIC接口操作OLED屏幕
实验13:ADC电压采样

本实验通过配置STM32CUBEMX工具,实现板上LED的控制。先看原理图,确认LED的接口和点亮电平。LED部分电路如下:

对应单片机的接口为PC15、PA1、PA2:

接下来打开STM32CUBEMX,进行相应操作:

1、新建工程。通过点击“ACCESS TO MCU SELECTOR”来创建一个新的工程:

2、选择芯片。在位置1输入芯片型号“stm32f103c8”,在位置2用鼠标左键选中该型号,在位置3点击“Start Project”,开始进入芯片配置阶段。

第一次打开时界面如下:

3、配置IO。先找IO管脚,PC15、PA1、PA2。以PC15为例,找到后,使用鼠标左键点击,在弹出的菜单中选择“GPIO-Output”,配置该管脚的工作模式:

再用鼠标右键点击该管脚,选择“Enter User Label”,在弹出的对话框中输入“LED1”,然后敲回车。这样,完成了对改管脚工作模式的配置,同时给它起了一个名字“LED1”方便在程序中进行快捷操作。

PA1和PA2同理,模式都是OUTPUT,名字分别为LED2和LED3。

4、打开外部时钟。位置1所示,点击“System Core”,选择RCC。位置2所示,在右侧弹出的菜单栏中选择“Crystal/Ceramic Resonator”。表示系统使用的时钟源为外部晶体。

5、选择调试接口。位置1所示,点击“System Core”,选择RCC。位置2所示,在右侧弹出的菜单栏中选择“Serial Wire”。程序的调试和下载都通过该“Serial Wire”接口。

配置完成后,芯片外形如下:

6、配置时钟。刚才第四步只是打开时钟,并没有对时钟进行配置。因为STM32内部有PLL倍频、分频功能,可以对时钟进行倍频和分频操作。在原理图中,芯片外接了一个8MHZ的晶体,如图:

这里,我们需要把它倍频到72MHZ。先点击“Clock Configuration”页面,按照下面红色框中的值,从左到右进行配置即可。

7、生成工程。在工程管理页面“Project Manager”,先点击“Code Generator”,选择如下配置:

再点击“Project”,进行如下配置:

位置1为稍后要生成的工程名称,根据个人习惯进行保存。

位置2为该工程要保存的路径,注意,由于软件对中文支持不稳定,尽量保存在英文路径。

位置3为工程内部的结构,选择高级。

位置4为生成的工程支持的IDE,这里选择MDK-ARM V5。

其余默认即可。

最后,点击右上角那个不像按钮的按钮“GENERATE CODE”,即可生成相应工程。工程生成之后,会弹出对话框,提示你是否需要打开。选择打开。

8、修改工程。在主函数的while(1)循环中,添加如下代码:

HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_SET);
HAL_GPIO_WritePin(LED3_GPIO_Port,LED3_Pin,GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(LED3_GPIO_Port,LED3_Pin,GPIO_PIN_RESET);
HAL_Delay(1000);

位置如下:

从函数名字可以看出:HALGPIOWritePin,是对GPIO的输出值做控制。

HAL_Delay(),是延时函数,单位是ms,这里输入1000,代表1000ms,也就是1秒。

修改后,保存,编译、下载,重新上电,可以看到板子上的LED每隔一秒,状态翻转一次。

如图所示,位置1保存,位置2重新编译,位置3下载。

由于是第一个实验,实验步骤较为详细。后续实验步过程中,相同步骤会进行省略,有疑问时建议参考实验1.同时,建议大家打开keil的代码自动补全功能。

需要源码的童鞋,在公众号(单片机爱好者)回复关键词:002或者STM32CUBEMX教程,即可获取下载链接。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据