小白的单片机之旅——单片机的启动
如前文《小白的单片机之旅——从点亮led说起(1)》所述,我们给mcu的所有文件就是一个bin文件,显然单片机的启动过程也体现于其中,与之相对应的文件就是与单片机硬件紧密对应的启动.s文件,下面我们以非常常见的使用ARM的cortex-M3内核的stm32f103zet单片机为例,说一说启动文件的内容。
一般该启动文件厂家会直接提供不需要自己去写,具体的文件内容这里不详细展开,就简单看一下启动文件的注释部分。简单来说启动文件做了以下一些事情:1、初始化栈指针;2、初始化程序指针为复位向量(这就是上电之后最开始要做的一些动作);3、设置中断向量表(如果对照bin文件和我们编译生成的map文件就会发现bin文件中栈顶指针数据、复位向量后面紧接着的就是各种中断处理函数的地址,这些就构成了硬件需要的完整的中断向量表,可以看到的是很多中断都预先有定义并且被定义成weak,这就表示,用户可以重写对应的中断处理函数,在编译过程中会使用用户定义的那个);4、初始化时钟系统(刚上电的时候clk是很慢的,在这里初始化时钟之后,mcu就快了);5、如果有外部扩展sram,初始化之;6、按照链接脚本的指示初始化对应的内存数据(比如我们定义的那些初始化的全局变量就是这个阶段生效的);7、跳转到我们用户的main函数(这就是我们一般认为c的程序入口)。
stm32f103zet对应启动文件的注释部分截图
中断向量表部分
由此,我们可以简要知道mcu上电之后发生的一些事情,进入我们的main函数之后,我们自己的“意志”开始执行了,下一节我们就一起看看如何将我们的控制led的意图告诉mcu,并让它正确的执行。
小白的单片机之旅——终于点亮led
万事具备,开始编码!本节我们将进行编码、编译、烧写,最终点亮led。
当前板子上控制led的引脚是PB5。代码的目的很简单就是控制PB5 的输出电平,也就是说我们要实现对GPIO的基本操作。
led的控制引脚
任何硬件的操作基本都要经过初始化和功能实现两个基础步骤。在此led控制的应用场景我们显然只需要配置该GPIO的工作状态为输出即可,针对STM32单片机不同的端口都有单独的外设时钟,为了使能端口的gpio功能,还需要使能其外设时钟,至此该GPIO就进入正常工作状态了。参考下图led的接法,可知当GPIO拉低时,LED点亮;GPIO拉高时,LED熄灭 。
led驱动电路
简单编码如下:
点亮led用户代码
代码ready之后,还需要编译才能得到我们的烧写文件。编译过程的核心文件就是Makefile,Makefile主要任务是说清楚使用什么编译工具链?编译目标是什么?依赖哪些文件?依赖哪些头文件?怎么编(编译选项,链接脚本(内存分布等等))?等等。当前一个简单的编译架构如下图所示。
简单的编译架构
编译路径原文件
编译完成后路径文件
当前烧写工具是使用hex文件,那么将hex文件通过上节所述烧写工具烧写到板子上,观察led状态。发现led被点亮,运行成功。
程序加载之后,led点亮
至此,我们走了一遍完整的分析、编码、编译、烧写运行的流程,led已经被点亮,达到预期目的。
一般来说led的显示控制不是静态点亮的要求(如果这样,还不如直接接电源,完全不需要单片机控制),比如需要闪烁,而且需要控制闪烁频率(可以编码通信哦,比如老式电视遥控的红外通信),或者控制led亮度(呼吸灯?),那我们下节一起看看吧。
相关问答
帮忙讲解一下 单片机 可以吗?这里讲解的单片机仅仅只是大轮廓的一个概念,具体要详细学习单片机最好是网上购买单片机入门至制作,才可以真正意义上...帮忙讲解一下单片机可以吗?★实话实说,...
单片机 延迟400ms的程序肿么编啊,-ZOL问答你先把HEX文件编译出来,再在PROTEUS里,在单片机属性里有一选项,把HEX文件在电脑中的路径填进去,点确定就能用了有用(0)回复当然可以,学单片机你只要能熟练使...
单片机 系统输入和输出电路工作原理-ZOL问答单片机输入:晶振提供时钟同步复位电路:系统复位,外置自动复位电路:程序跑飞时...OMEN暗影精灵10实测《对马岛之魂:导演剪辑版》极致之旅评论6热门问题苹果...
华体会hth(官方)最新下载IOS//手机版APP_微思注册流程,让您轻松开启精彩的体育之旅。🚂第一步:访问华体会hth官网首先,打开您的浏览器,输入华体会hth的官方网址😺(http://www.wesiedu.com/zuoye/5914....
怎么使用是stc isp烧录 单片机 程序代码-ZOL问答你好,SST的单片机是不能用STC-ISP软件烧写程序的,因为内部寄存器不一样,烧写程序时ISP软件是要读取单片机的串号信息的,即使是STC的单片机也要选择正确的型号才...
单片机 仿真软件有哪些-ZOL问答你先把HEX文件编译出来,再在PROTEUS里,在单片机属性里有一选项,把HEX文件在电脑中的路径填进去,点确定就能用了有用(0)回复支持单片机相关的开发平台喽,比如...
想做嵌入式工程师,该怎么办?尽量参加到一些比赛中去(国赛或者省赛都不要放过)。当然自己学的就要靠自己去找一些小项目练手了。4、玩完了单片机就可以开始ARM之旅了。当然也是整一块开发...
51 单片机 c语言看门狗程序肿么写-ZOL问答看门狗在51单片机电路里的作用是防止程序“跑飞”、“死机”后,系统不动作,而采取复位的办法“唤醒”系统。89S51、89S52系列单片机自带有看门狗功能,片内数据...
单片机 中rel什么作用?-ZOL问答为单片机工作提供一个稳定的频率。相连的两个电容是匹配晶振用的,具体的取值根...OMEN暗影精灵10实测《对马岛之魂:导演剪辑版》极致之旅评论6热门问题苹果...
单片机 为何要进行烧录呢?-ZOL问答先连接USB线,按提示在电脑安装CH341驱动,此时USB口已虚拟为串口,在线的另一端连接单片机开发板串行口,按正常办法下载即可(选单片机型号,加载程序,点击下载,打开...