单片机编程
单片机程序编写和PC程序编写有很大区别。 虽然基于C的MCU开发工具越来越流行,但对于拥有高效程序代码且喜欢使用汇编的设计者来说,汇编语言仍然是最简单、最高效的编程语言。
对于单片机编程来说,基本框架可以说是大致相同的。 一般分为三个部分:初始化部分(这是单片机编程与PC编程最大的区别)、主程序循环体和中断处理程序,分别进行说明。 如下:
初始化:对于所有MCU程序的设计来说,初始化是最基本也是最重要的步骤,一般包括以下内容:
屏蔽所有中断并初始化堆栈指针:初始化部分一般不希望发生任何中断。
清除系统的RAM区域和显示内存:虽然有时可能不是完全必要,但从可靠性和一致性的角度来看,特别是为了防止意外错误,建议养成良好的编程习惯。
如果你看累了,可以先关注我,以免迷路。 打开你的头像,关注即可查看你的个人主页和简介。 更多精彩内容,拨打“林老师”与大家分享。
IO口的初始化:根据项目的应用需求,设置相关IO口的输入输出模式。 对于输入端口,需要设置其上拉或下拉电阻; 对于输出端口,必须设置其出生级别。 输出以防止不必要的错误。
中断设置:对于工程中需要使用的所有中断源,都应该打开并设置中断的触发条件。 对于不使用的冗余中断,必须将其关闭。
其他功能模块的初始化:对于需要使用的MCU的所有外围功能模块,必须根据项目应用的要求进行相应的设置。 例如,对于UART通信,需要设置波特率、数据长度、验证方法和停止位。 长度等,对于编程定时器,必须设置其时钟源、分频器、重载数据等。
参数初始化:完成单片机硬件和资源的初始化后,下一步就是初始化程序中用到的一些变量和数据。 这部分的初始化需要根据具体项目以及程序的整体安排来设计。 。 对于一些使用EEPROM保存工程预制数据的应用,建议在初始化时将相关数据复制到MCU的RAM中,以提高程序对数据的访问速度,降低系统功耗(原则上访问外部EEPROM不会影响系统的功耗)增加电源的功耗)。
主程序循环体:大多数MCU都是长时间连续运行的,所以它们的主程序体基本上都是循环设计的。 对于多种工作模式的应用,可能存在多个环路。 体,并通过状态标志相互转换。 对于主程序体来说,一般安排以下模块:
计算程序:计算程序一般比较耗时,因此我们坚决反对在任何中断中处理它们,尤其是乘法和除法运算。
显示传输方案:主要针对外接LED和LCD驱动器的应用。
中断处理程序:中断程序主要用于处理实时性要求较高的任务和事件,如外部突发信号的检测、按键的检测和处理、定时计数、LED显示屏扫描等。
一般来说,中断程序应使代码尽可能简洁和短小。 对于不需要实时处理的功能,可以在中断中设置触发标志,然后主程序就会执行具体的事务——这一点非常重要。 特别是对于低功耗、低速的MCU,必须保证对所有中断的及时响应。
不同的MCU对于不同任务体的安排有不同的处理方式。
例如,对于低速、低功耗的MCU(Fosc=32768Hz)应用,考虑到此类项目是手持设备且使用普通LCD显示屏,对按钮按下的响应和显示响应要求实时性较高,因此这一般、定时中断用于处理按钮动作和数据显示; 对于高速MCU,如Fosc>1MHz的应用,由于此时MCU有足够的时间执行主程序循环,因此只能在相应的中断中设置各种触发标志位来执行主程序循环所有任务都在主程序体中执行。
在MCU编程中,需要特别注意的一件事是防止在中断和主程序体中同时访问或设置同一个变量或数据。 有效的预防方法是将此类数据的处理安排在一个模块中,通过判断触发标志来决定是否对该数据进行相关操作; 在其他程序体(主要是中断)中,需要处理数据的处理处只设置触发标志。 –这确保了数据执行是可预测的和唯一的。
在学校学习了这些知识后,我没有时间去思考这些概念之间的差异。 一直专注于技术的提升,却忘记了这些基础才是基础。 在家的这段时间,我准备整理一下他们之间的关系。 这是一个宏大的框架。 我写这篇文章是因为我在求职时接触过这些,所以想加深一下印象。 废话不多说了,直接进入主题吧。
手臂
在嵌入式领域,ARM本来就是微处理器行业的知名公司。 英国ARM公司是全球领先的半导体知识产权提供商。 全球超过95%的智能手机采用ARM架构,ARM设计了大量高性价比、低功耗的精简指令集计算(RISC)处理器。 这里的ARM指的是处理器。 Processor也意味着CPU,所以ARM处理器就是CPU的意思。 ARM不生产芯片,而是生产CPU。 它是一个32位精简指令集处理器架构。 ARM处理器包括以下系列处理器产品以及其他制造商实现的基于ARM架构的处理器。 如ARM7系列、ARM9系列、ARM9E系列、ARM10E系列等。 这些处理器广泛应用于实时嵌入式应用,例如存储设备、汽车、工业和网络设备。
STM32
上述ARM处理器内核目前包括ARM7、ARM9、ARM9E、ARM10E、SecurCore以及最新的ARM11系列。 STM32采用Cortex-M3内核。 当时由于arm7的能效较低,arm9的硬件和编程过于复杂。 为了改进arm7以满足消费电子的需求,其代号为cortex-m。 这样st或者nxp等厂商就可以使用这个新的核心来添加自己的外设,得到stm32或者lpc系列微控制器。 可以明显看出stm32是基于ARM Cortex-M3内核,但并不属于ARM。 由于ARM只提供处理器,因此ST(意法半导体)和NXP(恩智浦半导体)厂商以此核心为核心,添加外设,得到stm32或lpc系列微控制器。 只能说stm32是基于ARM Cortex-M3内核的,但它不属于ARM。 ARM Cortex-M3内核具有高性能、低成本、低功耗的特点,是ARM7架构的一员。
51单片机
我们先来说说51单片机和stm32单片机的区别。 首先,我们先介绍一下什么是微控制器。 单片机的全称是单片机。 简单来说,就是将CPU(运算、控制)、RAM(数据存储-内存)、ROM(程序存储)、输入输出设备(串口、并口等)和中断系统集成在同一台设备上的设备。芯片。 。 在我们的个人电脑中,CPU、RAM、ROM、I/O都是独立的芯片,然后这个芯片安装在主板上。 这构成了我们的PC主板,然后将其组装成计算机。 微控制器只是结合了所有这些。 都集中在一个芯片上。
51单片机是所有兼容Intel8031指令系统的单片机的统称。 该系列MCU的始祖是Intel的8031 MCU。 后来,随着Flash ROM技术的发展,8031单片机取得了长足的进步,成为应用最广泛的8bit单片机之一,其代表型号是ATMEL公司的AT89系列。 STM32微控制器是ST(意法半导体)生产的采用ARM的cortex-M为核心的32位系列微控制器。 其内部资源(寄存器和外设功能)比8051、AVR和PIC多得多。 基本接近电脑的CPU,适用于手机、路由器等。
开发板和单片机的区别
经过前面的总结,ARM处理器核加上外围模块(如UART、IIC)组成一个芯片(如STM32),即单片机。 单片机芯片加
由一些常用电子器件组成的电路板就是开发板。 对于初学者来说使用起来很方便。 常用的外设有LED灯、数码管、独立按钮、矩阵按钮、液晶屏、红外接收器等,单片机只是上面的核心芯片。