单片机点亮led进修笔记,事前思维逻辑以及准备事项
一,安装软件优先选择非中文路径,否则后续可能出问题
二,新建工程,命名 - 新建文件- 保存,命名.c结尾文件 - 在左侧的文件夹里面导入c文件
三,编辑-配置里面能够修改重要关键字颜色
文章相对比较长,字数比较多,大家可以先打开头像关注我,之后慢慢看,///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像左下角黑色字体加我也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比赛///
四,写好c程序以后,编译阶段前要在option for target - output里面生成hex文件
五,在stc中烧录程序,先选择单片机型号 - 翻开程序 - 连接设备“设备管理器-端口 查看com口信息”-选好串口点击“下载”,再翻开单片机电源
六,#typedef unsigned char u8 重新定义u8为没符号的字符变量,定义语句须要放在#include语句下面或 #define u8 unsigned char
七,单片机中定义子函数的语句要放在主函数main函数前面,子函数的主体能够放在后面子函数 delay( int x ) 括号中的 int x 代表这个函数在调用时要加入实参
八、修改头文件到达预定义的效果,D:\ruanjian111\keil5\keil5\C51\INC文件夹找得到 reg5二.h,输写D1=P2^0预定义D1
下面来实践
点亮LED灯
所运用的基于stm32f103zet6芯片的开发板中,关于LED外围电路的设计如下图中所示。从图中能够看出,独有当二极管(LED)的阴极电压为0V(低电平)时其会导通。因此通过单片机将相应接口的GPIO设置为低电平后,便能够控制LED灯亮,设置为高电平时,LED灯灭。
寄存器方式
通过前一章节对寄存器开发方式的简略介绍后,在本小节中运用寄存器开发方式达到对LED灯的亮灭控制。下图是一个关于GPIO的构造图,通过对其了解能够知道GPIO能够被配置成输写、输出、复用功能以及模拟输写输出四种模式。其中输写模式又被细分为模拟(ADC采集)、上拉、下拉以及浮空(输写电平不确定,完全由外部的输写决定,按键电路)模式;输出模式被分为推挽(输出高低电平)和开漏模式(输出高阻态或低电平);复用功能也被分为推挽和开漏两种模式,但是输出信号源于其它外设,输写正常可用,但一般直接用外设的寄存器来获取该数据信号;模拟输写输出模式,高低拉没影响。
清楚了GPIO的模式配置后,下面通过寄存器来操作端口PC0输出一个低电平,进而使连接在其上的一颗LED灯亮起。最初始的模板准备工作在前一章节中已经详细描述,在此就不做过多赘述。
翻开之前已经建设好了的寄存器开发模板,在main.c文件中编写的代码如下。
库函数方式
本小节应用库函数开发的方式来点亮一颗LED。反复上一章节中库函数工程模板的建设,对stm32的GPIO进行操作就须要将规范库中的stm32f10x_gpio.c和stm32f10x_cc.c文件添加到项目中,前者是关于GPIO操作的函数声明及模式选项配置的宏定义,后者是关于时钟的一些函数和宏定义。在这里采用模块化编程,也就是将led看做一个功能模块,在项目中新建led.c及led.h文件,最后在main.c文件中包括运用。详细的代码如下所示:
led.c
led.h
main.c
HAL库方式
翻开在上一章节中已经建设好的STM32CubeMX项目,在芯片的图形化界面中找得到PC0端口单击后将其设置为GPIO_Output模式;
在左侧的System Core菜单中选择RCC(时钟配置),将HSE和LSE设置为Crystal/ceramic Resonator模式,即外部晶振;
将GPIO选项中的GPIO Mode and Configuration中的GPIO mode设置为Output Push Pull(推挽输出),User Label设置为LED(端口标签),其它的选项默认即可;
随后切换主菜单到Clock Configuration时钟配置,在HCLK下方的框中输写72,其次按下回车则系统的时钟就被配置到了72MHz,最后点击GENRATE CODE,即可生成代码;
紧接着在keil5中翻开自动生成的项目,如下图中所示。能够看出整个项目标构成与规范库开发的方式类似,只不过这里的代码都是自动生成的。其中gpio.c文件中的代码为GPIO初始化与上一节中的led.c中的函数功能是相同的,只不过这里是运用了HAL库函数。在须要注意的是假如须要在这些CubeMX软件自动生成的文件中编写自定义的代码,是须要将其写在下述这段注释之间的,XXX表示的是某一个模块,假如Init(初始化)、SystInit(系统时钟初始化)等等;
最后点亮一颗LED,只须要在main()函数中写下如下代码即可。
三种方式的总结与比较
经过了对LED的简略操作,能够发此时这三种方式中,寄存器开发方式最为复杂。其在编写程序前须要查找好所运用寄存器的地址等有关信息,出现了bug时很难精准的定位、开发周期长的缺少点,因此寄存器开发常常不会被采用。规范库方式在其根底上简化了很多步骤,只须要通过调用有关外设的接口函数便可达到对应的功能,因此这一种方式也被广泛地应用到stm32单片机的开发中。HAL库开发方式由于CubeMX软件的存在,能够以图形化的方式对各种外设进行配置,大大方便了配置的步骤流程相比较于规范库来说还要愈加便捷。
对单片机感兴趣的朋友可以找我,我录制了一些关于单片机的入门教程,有需要的童鞋找我拿就像,免费的,私信我“林老师”就可以拿~点击打开我的头像就能领取
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved