单片机的底层驱动和应用程序有何不同?
扫描二维码
随时随地手机看文章
一、底层驱动
1、单片机底层开发一般指利用单片机的固有资源完成的控制功能的软硬件开发,比如时钟、通讯协议(232、485、UART、SPI、IIC、CAN、IR等)、定时器、AD转换、GPIO、外设驱动(各种现场控制、各种环境状况测控、电机控制、电磁阀、继电器控制、键盘扫描、LED和LCD显示)等。
2、根据时钟树图,观察初始化时钟时需要用到哪些寄存器及各种外设需要的时钟源。
3、配置定时器的时钟源,分频,比较值和PWM输出。
(1)当单片机内部有几种不同的时钟源时,必须配置相应的寄存器配置需要的时钟源,如果不进行配置,将会使用单片机上电默认的时钟源。
(2)时钟源决定着系统的工作频率、定时器定时时间和通信时的波特率。
(3)定时器分频是为了获得更长的定时时间,如果采用标志位累加的方式来延长定时时间,将会消耗单片机的RAM资源,在低端单片机中,由于RAM资源非常珍贵,因此只能采用定时器分频来延长定时时间。
(4)比较值对于简单的定时功能就是计算多少个数产生一次中断,对于PWM输出来说就是设置周期和占空比。
4、单片机的头文件只是最基础的定义,包括寄存器名称和分频值等,这些都是硬件确定好的内容,不能更改否则会出现错误。
5、通信协议配置的硬件方式是配置寄存器,软件方式是用IO模拟通信。
6、底层驱动与硬件相关,编写底层驱动程序要非常了解硬件,同时给应用层提供API函数调用接口,应用层可以通过调用这些接口去访问硬件,而不需要了解具体的硬件工作情况。
二、应用程序
应用程序是根据实际应用需求去编写的程序,指的是代码的逻辑部分,直接去调用底层驱动预留的接口,而不需要关心硬件底层的实现方式及实现过程。
三、形象说明
例如,你有一个应用是控制每天早上六点钟开灯,应用程序只负责在适当的时间做适当的事(到六点了,我要开灯了,按下按键)。具体它不知道为什么按下键就能开灯,因为按下键后开灯的过程就是底层驱动来完成了。