【STM32+cubemx】0002 HAL库开发:第一个程序——LED闪灯程序

本节我们来开发第一个程序,LED闪灯程序。

这里先介绍一下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连接到计算机的usb口上,然后点击keil上的download,就可以下载到开发板了:

下载时keil下方会有进度条提升,下载完成后,可以看到板子上的LED等以1s周期闪烁(0.5s灭,0.5s亮)。

至此,我们的第一个程序成功运行起来了。

欢迎关注我的公众号,文章同步更新,可留言获取相关资料和软件:

posted @ 2021-10-29 00:42  xiaobaibai_2021  阅读(530)  评论(0编辑  收藏  举报