控制/MCU
裸机(单片机)程序主要是相对于基于操作系统的程序开发而言,就是没有操作系统的基础上开发具有特定功能的代码。
比如我们要用51单片机控制一个LED灯的闪烁,不采用操作系统,通过51汇编代码或者C语言代码实现,这就是裸机程序。
1.搞清楚自己需要要实现的功能
根据需求,理清思路,结合硬件,思考需要怎么实现,用到什么相关资源。
2.查看原理图,了解硬件的用途及工作原理
弄清楚硬件和CPU的连接关系,用到哪些相关外设。
3.细读datasheet,尤其是寄存器
主要是看寄存器如何设置。硬件不能正常工作90%是寄存器设置有问题。
4.写代码
裸机程序其实就是寄存器设置。一般先初始化硬件,后实现具体需求功能的业务逻辑代码。
5.测试,解决问题
自测问题,查找BUG,解决问题。
这里我们基于tiny4412开发板硬件,实现对电路板上led2 闪烁功能为例讲解。
下面我们按照上面一般步骤走:
1.要实现的功能
控制led的亮与灭,可以使用GPIO控制
2.查看原理图,了解硬件的用途及工作原理
查看原理图,找到LED相关部分电路,如上图。我们要实现LED2的亮灭,LED2左端要是低电平才能亮,高电平灭。所以LED2 脚必须是低电平,led2才会亮。
然后我们通过LED2 标签,找到LED2连接到SOC的 GPM4_1引脚。所以剩下就是GPM4_1脚的设置问题。
3.细读datasheet,尤其是寄存器
单片机 GPIO(General Purpose Input Output)可以控制一根外部管脚的电路,可以输出高低电平,可以检测外部管脚电平。一个GPIO脚接口至少有两个相关寄存器,即“通用IO控制寄存器”与“通用IO数据寄存器”。数据寄存器的各位都直接引到芯片外部,而对数据寄存器中每一位的作用,即每一位的信号流通方向时输入还是输出,则可以通过控制寄存器中对应位独立的加以设置。
其中关于GPM4_1脚相关的寄存器描述如下:
问题来了,怎么设置一个寄存器?
arm处理器的就是属于内存映射。也就是说访问寄存器就像访普通内存一样。
这实际上就是内存映射机制的方便性了。这里就是通过内存寻址访问到寄存器,可以读/写操作。也就是只要我们知道某个寄存器的地址,就可以通过汇编指令或者C语言指针变量读写该地址数据就行。
4.写代码
a)初始化
b)功能
以上就是单片机程序,或者裸机程序开发一般步骤,适用所有MCU,SOC裸机程序开发。
全部0条评论
快来发表一下你的评论吧 !