最近两天琢磨了下MSP430的定时器,发现还是挺麻烦的,在这里把学习心得记录下来:在MSP430G2211上只有TIMER A中断,所以在这里我们讨论TIMER A ,TIMER B应该和TIMER A差不多。对于每一个定时器来说,它有两个中断,TIMERA0_VECTOR 和TIMERA1_VECTOR 。这两个中断何时被触发呢?在MSP430中,TIMERA0_VECTOR在TACCR0寄存器溢出时被触发;而TIMERA1_VECTOR 在三个时候都可以被触发(TACCR1 CCIFG、TACCR2 CCIFG,TAIFG只要这三个寄存器中的任何一个被置位了,TIMERA1_VECTOR 中断就会被触发)。显然,这样就会有一个问题:既然三个寄存器中的任何一个被置位了都会产生中断,那么用户如何区分这三种中断呢?在MSP430中提供了一个TAIV寄存器,在响应TIMERA1_VECTOR 时我们去查看TAIV寄存器中的值就能得到当前是谁产生了中断。代码如下:
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
switch(TAIV)
{
case 2:
。。。。
break;
case 4:
。。。。
break;
case 10:
。。。。
break;
} 关于TAIFG这个标记,很多人认为是定时器溢出的中断,所以很多人把TAIFG标记和TACCR0的中断认为是一个东西,但是仔细看430的用户手册你会发现,TAIFG标记并不一定是定时器溢出时才会被置位!
关键字:MSP430 定时器 中断使用
引用地址:
MSP430 定时器中断使用总结!
推荐阅读最新更新时间:2024-03-16 14:52
单片机(51) 中断函数如何使用
1.定时器与延时的区别 大家可能会觉得我们用延时函数照样可以实现代码的实验现象,但是定时器与延时的概念不同,延时函数需要占用CPU的使用权,正在延时的时候其他任务没有CPU的使用权就会拖慢执行效率。 而定时器是不需要占用CPU的使用权的,它是独立自己运行的,就像我们调好5分钟的闹钟,在这5分钟里我们可以随意执行任务,也可以什么事都不做,但是5分钟过后闹钟响了就要执行相关的任务了。 所以代码的实现原理就是每隔51微秒,有个变量会自加1,过了1000个51微秒的时候LED的状态才会改变,可以说CPU在51ms的时间里基本没什么事做,只是在51微秒到了的时候做了“cnt++;”这样简单的任务,然后又空闲地等下一个51微秒的到
[单片机]
MSP430杂谈--AD7793硬件SPI驱动与模拟SPI驱动
最近项目中用到了AD7793读取铂电阻值来得到相应的温度,编写了基于MSP430的硬件驱动程序和模拟驱动程序,并且能成功运行,现在记录一下分享给大家。 AD7793硬件IIC驱动完整版下载链接:https://download.csdn.net/download/qq_42580947/11041933 AD7793模拟IIC驱动完整版下载链接:https://download.csdn.net/download/qq_42580947/11041961 PS:目前资源积分无法自行调整,有谁知道可以修改积分的方法请告知,我想免费分享给大家。 1. AD7793硬件SPI驱动 单片机型号为:MSP430F57X
[单片机]
STM32高级定时器从模式 四种
一、通用定时器从模式:复位模式 使用TIM1的CH1输出PWM脉冲 使用TIM4的CH1作为触发输入通道。 PWM的上升沿触发TIM4的复位模式,复位TIM4计数器并触发中断. 定时器1配置,用来产生PWM脉冲 TIM_HandleTypeDef htimx; //基本定时器句柄 void ADVANCED_TIMx_Init(void) { TIM_ClockConfigTypeDef sClockSourceConfig; //定时器时钟配置 TIM_MasterConfigTypeDef sMasterConfig; //定时器
[单片机]
stm32 系统嘀嗒(SysTick) 定时器
系统嘀嗒校准值固定为9000,当系统嘀嗒时钟设定为9MHz(HCLK/8的最大值),产生1ms时间基准。 在3.5 的库中 void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource) 位于 misc.c 文件中 然后在core_cm3.h 文件中,定义了一个内联函数,完成定时配置,中断开启,定时器开启的功能。 /* ################################## SysTick function ############################################ */ #if (!defined (__Vendo
[单片机]
基于MSP430F448单片机的交流数字电压表设计
MSP430F44x系列是TI公司推出的一款超低功耗的16位单片机,其运算速度快而且体积小。片内集成了8路12位A/D、串行通信接口、看门狗定时器、比较器、硬件乘法器等外围设备模块,从而降低了应用电路的复杂程度,提高了系统的可靠性。该芯片可以工作于2.5 V和3.3 V两种电压下,并且可以处于休眠状态,此时的频率只有32768 Hz,功耗非常低,环境温度范围为-40~+125℃。这些优点非常适合设计便携式,且要求长时间连续工作,环境温度变化宽的智能仪器仪表设备。MSP430F44x系列单片机具有其他单片机无法比拟的优点,用其来实现交流电压的测量是一种很好的设计方案。 1 系统总体方案设计 本系统主要由以下4大模块组成:中央处
[单片机]
基于嵌入式WinCE与MSP430单片机多串口通信设计
在远程监控和工业自动化系统中,串口通信因其具有连接简单、使用方便、可靠性高的优点,得到越来越广泛的应用。讨论了采用WinCE嵌入式与MSP430单片机构建串口多机通信系统的问题,在分析了WinCE操作系统与MSP430单片机串口模块特性的基础上,给出了进行串口通信的总体框图,针对实际串口通信存在的问题制定串行通信协议,然后在该系统硬件基础上根据需要定制WinCE系统内核,最后实现串口通信设计。实验结果表明:该系统能够达到多串口通信的要求。 目前WinCE嵌入式与MSP430单片机在仪器仪表、工业控制、移动设备等有着广泛的应用。在很多复杂的应用场合比如多点温度采集、多点转速采集,一个单片机不能满足要求,需要多台单片机协同工作,此
[单片机]
关于MSP430的RST引脚的处理方式
前些天给MSP430G2553的小片子画了个TSSOP的转接板,方便用杜邦线连模块用。 画板子的时候把所有引脚都用2.54的排针引出,想着不会出什么问题,因为N年前在用F5438的时候就是直接用LQFP100的转接板把所有引脚引出来,插上3.3V电源片子就能跑了(对于当时只用过51的我还是很震撼的,毕竟51要跑起来外面要接一大堆东西)。 但是把这个G2553焊上去,连launchpad下程序后,发现程序怎么都不运行,还以为是买到便宜的假片子了。 量了一圈,3.3V电源正常,RST引脚2.5V!这种半高不高的电平就是典型的悬空IO的现象。 郁闷了,之前用5438没啥问题,后来的stm8 到stm32 到什么飞思卡尔的
[单片机]
基于MSP430F149的数据转发器设计
摘要:以MSP430F149单片机为核心,设计一种双串行通信的电能表自动抄收系统的转发器,给出转发器的硬件结构框架与软件设计方案。转发器通过三种通信方式实现主机与电表抄表器的数据通信。
关键词:转发器 串行通信 MSP430 微控制器
概述
目前大量存在的人工抄表的方法已远不能适应现代化管理的需要,并由此带来的线损率的增高也必然影响电力行业的发展。线损率较高的主要原因之一就是抄表、计算和管理手段的落后,管理损耗增大。如果采用电能表自动抄收系统,不仅可以大大提高电网运行的可靠性,而且可以充分利用现有设备的能力,降低劳动强度。该系统主要由电表抄表器(数据采集)、数据转发器(数据传输)和主机(数据处理)三大部分组成。本文主要设计
[应用]