单片机学习小组
登录
直播中
半导体开发
9年用户
848经验值
擅长:可编程逻辑
私信
关注
如何利用HAL库实现LED闪灯?
开启该帖子的消息推送
单片机
如何利用HAL库实现LED闪灯?
回帖
(1)
李伟
2022-2-8 15:43:43
这里先介绍一下cubemx生成的代码,它可以生成HAL库和LL库,HAL库封装得比较完善的库,用户不用过多关注底层硬件的具体设置就能完成开发,代码效率低一些;而LL库类似于直接操作寄存器,代码效率比较高,但是需要用户比较了解底层的硬件,才能较好地改写、开发。
我们这里都是使用HAL库开发,一般分两步:先在cubemx里配置芯片参数、生成底层的初始工程代码;然后在keil里打开工程文件,编写自己的应用代码,编译、下载到开发板运行。
1)cubemx生成代码
打开cubemx,点击主界面上的access to MCU select:(也可以通过菜单file->new project->MCU select进入 )。我们第一步需要选器件。
进入后,按下图,找到我们开发对应的芯片stm32f103c8t6:
双击对应的芯片后,进入如下界面,在第一个pinout & configuration选项卡中,进行处理器的资源配置:
首先配置SYS,debug选上serial wire,即选择SW调试接口;其他的不改动。
因为我们使用的简易版st-link,只能使用SW接口进行调试和下载,所以这里我们只能选择SW调试接口。
然后选择RCC时钟源,我们这个开发板上硬件是外部连接了8M的高速晶振以及32.768k的低速晶振,所以两种时钟都选择外部晶振:
然后配置GPIO,也就是我们要用到的LED的引脚,在开发板的威廉希尔官方网站 图上,我们可以看到,LED连接在PC13引脚上:
所以,配置GPIO时,我们把PC13设置为输出(在右图芯片上找到PC13引脚,然后右键,选择GPIO_output),设置完成后已经占用了的引脚会变成绿色。
然后切换到时钟选项卡,如下设置时钟:
这里我们选择外部晶振8M时钟,速率乘以9倍,设置为最高主频72Mhz
然后切换到project Manager选项卡,填入工程名,建议全英文名称和路径;由于我们使用keil开发,工具链选择MDK-ARM V5;如果上一节中cubemx中的器件包安装的是默认路径的话,图中的第三处应该可以不用修改,如果安装时不在这个路径下,则需要手动修改一下路径。
在到code generator下勾选为每个外设建立.c和.h文件,这样以后方便修改,不会很混乱:
最后,点击右上角的generate code,就可以生成工程代码了。
2)keil中的编程和下载
在keil中打开生成的工程,打开文件main.c,可以看到软件生成的代码中,main函数中已经有硬件初始化的代码,有已经有了主体的程序框架:
这里说明一下在cubemx生成的工程里,用户代码最好添加在类似如下这种USER CODE BEGIN和USER CODE END之间,这样添加的代码下次使用cubemx重新配置工程的时候可以保留,否则会被删除。
我们添加延时和翻转PC13引脚的代码如下:
这部分代码写在无限循环内部,首先拉低PC13引脚(点亮LED),然后延时500ms,再拉高PC13引脚(熄灭LED),然后再延时500ms,如此循环。
代码编写完成后后,点击build编译,完成后,下方提示栏会有提示,如果错误数为0,则成功生成了目标文件(*.axf),可以进入下一步下载到硬件上验证了。
3)烧写和运行
首先查看keil中的下载器设置,在debug选项中,确认调试和下载工具选择的是st-link:
然后,点击后面的setting,切换到flash download选项卡,勾选reset and run,这一步是设置下载完成后程序自动运行:
然后,将开发板的SWD接口的四根线,对应连接到st-link的四根线,注意不要连错,开发板的电源连接到stlink的3.3v接口:
将st-link连接到计算机的u***口上,然后点击keil上的download,就可以下载到开发板了:
下载时keil下方会有进度条提升,下载完成后,可以看到板子上的LED等以1s周期闪烁(0.5s灭,0.5s亮)。
至此,我们的第一个程序成功运行起来了。
这里先介绍一下cubemx生成的代码,它可以生成HAL库和LL库,HAL库封装得比较完善的库,用户不用过多关注底层硬件的具体设置就能完成开发,代码效率低一些;而LL库类似于直接操作寄存器,代码效率比较高,但是需要用户比较了解底层的硬件,才能较好地改写、开发。
我们这里都是使用HAL库开发,一般分两步:先在cubemx里配置芯片参数、生成底层的初始工程代码;然后在keil里打开工程文件,编写自己的应用代码,编译、下载到开发板运行。
1)cubemx生成代码
打开cubemx,点击主界面上的access to MCU select:(也可以通过菜单file->new project->MCU select进入 )。我们第一步需要选器件。
进入后,按下图,找到我们开发对应的芯片stm32f103c8t6:
双击对应的芯片后,进入如下界面,在第一个pinout & configuration选项卡中,进行处理器的资源配置:
首先配置SYS,debug选上serial wire,即选择SW调试接口;其他的不改动。
因为我们使用的简易版st-link,只能使用SW接口进行调试和下载,所以这里我们只能选择SW调试接口。
然后选择RCC时钟源,我们这个开发板上硬件是外部连接了8M的高速晶振以及32.768k的低速晶振,所以两种时钟都选择外部晶振:
然后配置GPIO,也就是我们要用到的LED的引脚,在开发板的威廉希尔官方网站 图上,我们可以看到,LED连接在PC13引脚上:
所以,配置GPIO时,我们把PC13设置为输出(在右图芯片上找到PC13引脚,然后右键,选择GPIO_output),设置完成后已经占用了的引脚会变成绿色。
然后切换到时钟选项卡,如下设置时钟:
这里我们选择外部晶振8M时钟,速率乘以9倍,设置为最高主频72Mhz
然后切换到project Manager选项卡,填入工程名,建议全英文名称和路径;由于我们使用keil开发,工具链选择MDK-ARM V5;如果上一节中cubemx中的器件包安装的是默认路径的话,图中的第三处应该可以不用修改,如果安装时不在这个路径下,则需要手动修改一下路径。
在到code generator下勾选为每个外设建立.c和.h文件,这样以后方便修改,不会很混乱:
最后,点击右上角的generate code,就可以生成工程代码了。
2)keil中的编程和下载
在keil中打开生成的工程,打开文件main.c,可以看到软件生成的代码中,main函数中已经有硬件初始化的代码,有已经有了主体的程序框架:
这里说明一下在cubemx生成的工程里,用户代码最好添加在类似如下这种USER CODE BEGIN和USER CODE END之间,这样添加的代码下次使用cubemx重新配置工程的时候可以保留,否则会被删除。
我们添加延时和翻转PC13引脚的代码如下:
这部分代码写在无限循环内部,首先拉低PC13引脚(点亮LED),然后延时500ms,再拉高PC13引脚(熄灭LED),然后再延时500ms,如此循环。
代码编写完成后后,点击build编译,完成后,下方提示栏会有提示,如果错误数为0,则成功生成了目标文件(*.axf),可以进入下一步下载到硬件上验证了。
3)烧写和运行
首先查看keil中的下载器设置,在debug选项中,确认调试和下载工具选择的是st-link:
然后,点击后面的setting,切换到flash download选项卡,勾选reset and run,这一步是设置下载完成后程序自动运行:
然后,将开发板的SWD接口的四根线,对应连接到st-link的四根线,注意不要连错,开发板的电源连接到stlink的3.3v接口:
将st-link连接到计算机的u***口上,然后点击keil上的download,就可以下载到开发板了:
下载时keil下方会有进度条提升,下载完成后,可以看到板子上的LED等以1s周期闪烁(0.5s灭,0.5s亮)。
至此,我们的第一个程序成功运行起来了。
举报
更多回帖
rotate(-90deg);
回复
相关问答
单片机
如何用
HAL
库
及中断控制
LED
灯
?
2022-01-20
1119
如何
利用
STM32
实现
LED
灯
状态翻转?
2021-11-16
3010
如何使用
HAL
库函数
实现
按键控制
LED
灯
?
2021-11-16
1380
如何
利用
STM32控制对应序号的
灯
开关
闪
?
2021-12-03
883
在CH573F开发板上运行CentPeri例程,插入任务
LED
闪
灯
失败是为什么?
2022-08-15
299
如何
利用
51单片机
实现
LED
灯
闪烁?
2021-10-19
1622
如何
利用
STM32CubeMX点亮第一个
LED
灯
?
2022-02-08
1450
如何
利用
51单片机
实现
led
灯
的点亮?
2021-10-26
3087
基于
HAL
库
的GPIO操作该怎样去
实现
呢
2022-01-18
1296
如何去
实现
一种基于STM32LL
库
点亮
LED
灯
的设计
2021-09-28
816
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分