裸机(单片机)程序主要是相对于基于操作系统的程序开发而言,就是没有操作系统的基础上开发具有特定功能的代码。
比如我们要用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脚相关的寄存器描述如下:
gpm4[1],gpm4con寄存器,地址是0x1100_0000 + 0x02e0,7:4位,设置为0x1,设为输出模式。设置gpm4[1]为输出高电平,需要设置gpm4dat寄存器的bit1为1。设置gpm4[1]为输出低电平,需要设置gpm4dat寄存器的bit1为0。问题来了,怎么设置一个寄存器?
arm处理器的就是属于内存映射。也就是说访问寄存器就像访普通内存一样。
这实际上就是内存映射机制的方便性了。这里就是通过内存寻址访问到寄存器,可以读/写操作。也就是只要我们知道某个寄存器的地址,就可以通过汇编指令或者c语言指针变量读写该地址数据就行。
4.写代码
a)初始化
设置gpm4_1为输出模式,gpm4con[7:4]位位设置为0x1设置gpm4dat寄存器的bit1为1,led2灭b)功能
实现led2闪烁循环逻辑程序以上就是单片机程序,或者裸机程序开发一般步骤,适用所有mcu,soc裸机程序开发。
选频放大器
iPhone XR是2019年最畅销机型,为苹果总销量贡献四分之一以上
虹科干货 | 虹科OPC解决方案之快速实现OPC数据存储到数据库
土壤肥力检测仪器有什么作用
魅族16X拍照评测 到底怎么样
单片机(裸机)程序一般怎么写?
【开发指南】使用NB通讯模组快速接入机智云
中兴通讯成功中标了2020年中国移动省际骨干传送网十三期新建工程项目
618战报销冠谜底:“收割机”联想屠榜背后的三大利器是什么?
三相分支电路和馈线中的电压降计算介绍
华为全联接大会 2023 | 华为数据通信参会早知道!
三路输出LED驱动器可驱动共阳极LED串
关于高频数字抽取滤波器的设计
过电压与过放电保护控制电路
聚积看好未来MiniLED/MicroLED市场发展 预计年底开始量产出货
2018CES展现的现代NEXO_中外燃料电池车差距在哪里
迅为iTOP-RK3588开发板多屏同显多屏异显异触
基于CA3189的信号表电路原理图
CXL将成为跨计算引擎的内存结构标准
木林森披露2018年年度报告,2018年营收与净利均实现同比增长