1MSP430G2553概述
• 低电源电压范围:1.8V 至 3.6V
• 超低功耗
– 运行模式:230μA(在 1MHz 频率和 2.2V 电压 条件下)
– 待机模式:0.5μA
– 关闭模式(RAM 保持):0.1μ
• 5 种节能模式
• 可在不到 1μs 的时间里超快速地从待机模式唤醒
• 16 位精简指令集 (RISC) 架构,62.5ns 指令周期时间
• 基本时钟模块配置
– 具有四种校准频率并高达 16MHz 的内部频率
– 内部超低功耗低频 (LF) 振荡器
– 32kHz 晶振
– 外部数字时钟源
• 两个 16 位 Timer_A,分别具有三个捕获/比较寄存器
• 多达 24 个支持触摸感测的 I/O 引脚
• 通用串行通信接口 (USCI)
– 支持自动波特率检测的增强型通用异步收发器 (UART)
– IrDA 编码器和解码器
– 同步 SPI
– I2C™
• 用于模拟信号比较功能或者斜率模数 (A/D) 转换的 片载比较器
• 带有内部基准、采样与保持以及自动扫描功能的 10位 200ksps 模数 (A/D) 转换器
• 欠压检测器
• 串行板上编程,无需外部编程电压,利用安全熔丝实现可编程代码保护
• 具有两线制 (Spy-Bi-Wire) 接口的片上仿真逻辑电路
2系统时钟
MSP430G2553有三种时钟的功能:
MCLK:主时钟,专门为CPU运行提供的时钟
SMCLK:子系统时钟,专为一些需要高速时钟的片内外设提供服务,比如定时器和ADC采样
ACLK:辅助时钟,供给那些只需要低频时钟的片内外设,比如LCD控制器
讯享网
3GPIO与中断功能
I/O口方向寄存器:PxDIR
I/O口输入寄存器:PxIN
I/O口输出寄存器:PxOUT
控制内部上、下拉电阻寄存器:PxREN
MSP430G2553单片机的P1口与P2口带中断
是否允许I/O中断寄存器:PxIE
中断标志位寄存器:PxIFG
中断边沿选择寄存器:PxIES
MSP430G2553单片机是写位操作,例子如下:
讯享网
在实际编程中,可以用宏定义来消除“线与”逻辑带来的不便。 例如,将P1.0设为“线与”逻辑输出,可以用如下宏定义来描述:
MSP430G2553使用外部中断步骤如下:
1:通过PxDIR将I/O口方向设为输入
2:写PxIES可决定中断的边沿是上升沿、下降沿或两种情况均中断
3:如果是机械按键输入,可以通过PxREN启用内部上(下)拉电阻,根据按键的接法,设定PxOUT决定最终是上拉电阻还是下拉电阻
4:配置PxIE寄存器可开启I/O中断,“_enable_interrupts(); ”可开启总中断
5:在中断子函数中,通过if语句查询具体中断的I/O口,如果是机械按键输入,还需要消抖代码
6:根据具体I/O口的输入,编写事件处理函数
7:退出中断前,使用“PxIFG=0; ”来清除I/O中断标志位
4Timer_A定时器
MSP430G2553单片机的Timer_A模块的整体构造包括1个16位定时器和3个捕获/比较模块。
由于捕获模块Caputre和比较模块Comparator共用了TACCRx寄存器,所以捕获模块Caputre的功能是写TACCRx,而比较模块Comparator的功能是读TACCRx模块,所以捕获和比较不能同时使用。 CAP寄存器位用于选择捕获/比较工作模式,CAP=0为比较,CAP=1为捕获。
CCRx可以选择检测上升沿或下降沿,或者都检测。 CCRx用于测定信号脉宽时,只需要分别记录上升沿时刻和下降沿时刻,两个时刻相减就是脉宽; 而测量频率时,连续记录两次上升时刻,相减就是周期。
51单片机外部中断法与捕获法的区别:
外部中断法:边沿被检测——触发中断——进中断子函数——读取定时器值,这时读取的定时器值和实际边沿的时刻有较大的误差
捕获法:边沿被检测——立刻读取定时器值TAR并锁存到CCRx模块内TACCRx寄存器——触发中断——什么时候读TACCRx都可以。 这样的误差延时就仅有10ns级
比较模式用于设定定时器的周期
比较模块的OUTMODx设置。 普通PWM时,超前PWM(上升沿在主定时器0位置)配置模式7,滞后PWM配置模式3; 带死区PWM时,两路输出都必须开启,并且一路模式为6,另一路必须为2。
注意: 虽然每个Timer_A模块有3个捕获/比较模块(CCR0/1/2),但是CCR0的寄存器TACCR0已被用于设定PWM频率,因此用CCR1和CCR2最多能生成2路独立的PWM信号。 CCR0的比较值TACCR0用于设定周期,CCR1/2的比较值TACCR1/2用于设定占空比。
5WDT定时器
WDT(Watch Dog Timer)俗称看门狗
复位引脚被设置成NMI不可屏蔽中断来使用,这个中断和普通I/O外部中断一样,有中断子函数; 其区别是NMI中断不需要开总中断使能(因为不可屏蔽,所以优先级最高),NMI每次中断后会自动关闭NMI中断使能。
讯享网
变量知识点:
全局变量:具有全局作用域,全局变量只需在一个源文件中定义,就可以作用于所有的源文件。
静态全局变量:具有全局作用域,它与全局变量的区别在于如果程序包含多个文件的话,它作用于定义它的文件里,不能作用到其它文件里,即被 static 关键字修饰过的变量具有文件作用域。
局部变量:具有局部作用域,它是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回。
静态局部变量:具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在。
状态机知识点:
状态机也叫有限状态机,简称状态机。 状态机的概念来源于时序逻辑电路,又细分为Mealy状态机和Moore状态机,两者的区别在于是否根据状态就能得出输出结果。
单片机中借用了这两种状态机的思想,引申出“状态中判断事件”和“事件中查询状态”两种单片机状态的编程方法。
状态中判断事件:
这种方法类似与Mealy型状态机(不完全等同),即在switch语句中,还需判断Event才能决定输出的结果。
讯享网
事件中查询状态:
这种方法类似于Moore型状态机(不完全等同),在switch语句中,即无需再判断Event,由当前状态就知道结果。
两种状态机的优缺与区别:
1:如果Event直接由中断引发,不需要if语句轮询就能判断,则用Moore型转态机(事件中查询状态)执行速度快。 这是因为,只需执行对应Event的switch(State)语句,而且switch中只需State进行判断就可以输出结果了。
2:如果Event本身就需要轮询才能得出,则使用Mealy型状态机(状态中查询事件)的代码要简单。 因为状态中查询事件只有一个switch(State)语句。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/147331.html