| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 使用STM32CubeMX生成Keil工程并完成流水灯 -> 正文阅读 |
|
[嵌入式]使用STM32CubeMX生成Keil工程并完成流水灯 |
目录 一、介绍我的上篇文章介绍了如何借助其他大佬写好的工程模板来实现我们需要的功能,这种方法其实并不是最好的,但是对于我们初学者来讲是比较友好的,因为大多数大佬的代码都附上了相应的注释通俗易懂。今天我来给大家安利一款特别实用的软件,这是ST公司专门用于stm芯片的代码生成器,它能为我们省去许多步骤,以可视化的方式为我们呈现出来,特别的方便。 STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。STM32CubeMX几乎覆盖了STM32 全系列芯片。 可以直接下载,只需要你填好你的基本信息和邮箱就可以快速下载了。 关于STM32CubeMX的安装详细可以参考:【STM32】STM32 CubeMx使用教程一--安装教程_Z小旋-CSDN博客_stm32cubemx安装 二、使用STM32CubeMX生成Keil工程是否还记得我在上一篇文章中提到的初始化三步,如果我们直接在Keil中编写代码的话,初始化一步不能少,但是我们现在有更高级的工具了啊,所以下面我们就要通过这个工具(STM32CubeMX)来初始化配置。 1、创建新工程首先我们打开安装好的STM32CubeMX,并创建一个新工程。? 选择自己的芯片。 接着我们就可以看到我们自己的芯片了,如下图: 2、初始化配置?现在就需要我们对于管脚和时钟进行初始化配置了,我设置的管脚(PA4、PA5、PA6)输出为LED提供高电平。 先配置时钟,选择晶振 现在我们来配置时钟树,中间把8MHz改成72并回车。?回车之后会弹出 点击“OK”即可完成时钟配置。 现在咱们再来配置输出管脚与输出模式。在STM32CubeMX上配置我们所需要的输出管脚与输出模式可比我们自己写代码来初始化简单多了,我们只需要点击可视化图上对应的管脚,选择为输出即可。 ?现在我们再来配置输出模式,点击左侧GPIO来配置我们用到的输出管脚。在我们点击以后会出现以下界面,由于三个管脚配置相同,所以我只讲解一个,其他同理即可。 ?我们注意看下面的输出模式配置:
?3、工程导出现在我们已经初始化好我们需要用到的管脚了,可以导出工程让我们继续完善我们的代码了。 点击上方的Project Manager,配置以下内容(注意我用红色字体写的提示)。 ?设置我们需要保存的路径,以及以什么方式打开该工程。
现在我们基本完成了工程的配置,可以生成代码并导出了。点击右上角?GENERATE CODE?生成代码。 三、在Keil中完善我们的功能?代码生成完以后我们点击打开工程,即可跳到我们的Keil工程中了。 注意到我们左侧的工程栏里,可以看到gpio.c文件还有main.c文件,这些就是依靠STM32CubeMX给我们生成的代码了,怎么样,是不是比我们自己来写代码初始化简单多了方便多了,所以说这是个很好用的工具嘛。我们现在打开初始化文件来看看。 gpio.c: 可以看到与我们上次自己写的初始化代码其实很相似,道理是一样的,在这里我就不做赘述了。生成的gpio.h文件中也只有一个函数声明语句。 现在我们需要做的是什么呢,当然是完善我们自己的功能啦。那么我们要在哪儿完善我们的代码呢,打开我们的main.c文件,找到我们的主函数中的while循环(因为我们要实现的功能简单,而且全部已经初始化了,所以只需要在主函数中编写代码就可以了)。 我们可以看到很多的/* USER CODE BEGIN 2 */ 和/* USER CODE END 2 */,我们要编写的代码就在这BEGIN和END中间。在中间加上我们的代码就可以了。
这个时候可能很多小伙伴就要问了,每段语句前面的 HAL_ 是什么意思呀,实际上这是一个叫HAL库的东西,具体HAL库是什么意思呢,有什么用呢
如果想详细了解的小伙伴可以参考:(21条消息) STM32 之 HAL库_戈扬的博客-CSDN博客_hal库?总之,我们用HAL库中的函数的话就会更加方便,而且许多函数都非常好用。? 现在我们就可以进行烧录了,烧录首先需要我们将USB-TTL与我们的板子相连,接到我们的PC上并用FlyMCU进行烧录,具体过程可以参考我上一篇博客。 烧录完成后让我们来看看效果吧! 四、在仿真中观察波形我们平常创建好工程并写好代码以后是不是都要将程序烧进电路中才能验证我们代码的正确性呢,答案当然是否定的,因为靠烧录进板子来验证真的是太麻烦了,每个程序都需要烧录一次,而且还要重新接线,真的很麻烦。所以我教大家一种新的方法——仿真实验看波形来验证我们的正确性。 1、仿真配置在开始仿真之前我们需要对keil进行一系列的配置,点击“仙女棒”,然后在Debug选项中选择软件仿真(use simulator),并且将下面的设置改成你对应的芯片即可。? 现在我们再运行仿真,并调出逻辑窗口,在逻辑窗口中添加上我们需要查看的管脚号。 点击setup添加对应管脚号。 点击添加管脚号,然后输入我们想查看的管脚号即可,比如:porta.0 ?开始仿真,得到结果,观察仿真波形图。 ? 此时我们先不要着急,观察一会儿,这里观察一下我们的延时函数是否准确。将鼠标移动至第一个下降沿处,当鼠标与其重叠时,读取此时时间。 我们发现横坐标正好是0.5s,但是我们回顾我的上篇博客用的延时函数? 有没有发现有一些不同。
我想说的是我们用的也是我上次埋下的伏笔,延时方式不同延时的准确性也有差别,软件延时的原理是让程序空跑?期间啥都不干,对于时间精度高的工作我们一般不采用这种延时方式。我们在这里可以看出HAL库中的函数貌似更加准确,这在我们后续的学习中慢慢探索。 参考资料: |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
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 6:47:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |