| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 【STM32+cubemx】0002 HAL库开发:第一个程序——LED闪灯程序 -> 正文阅读 |
|
[嵌入式]【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亮)。 至此,我们的第一个程序成功运行起来了。 欢迎关注我的公众号,文章同步更新,可留言获取相关资料和软件: |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 8:27:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |