麻烦懂keil5的朋友来看一下,我这是哪里错了?怎么按教程连keil点亮一盏LED灯个LED灯都出错呢?


2021年1月7日2021年1月5日 由 MCU起航
实验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教程,即可获取下载链接。

我要回帖

更多关于 keil点亮一盏LED灯 的文章

 

随机推荐