历史上的今天
返回首页

历史上的今天

今天是:2025年04月21日(星期一)

正在发生

2020年04月21日 | MSP430F149的TIMERA定时中断理解

2020-04-21 来源:eefocus

代码如下:


//本平台 msp430f149

#include

#include

 

volatile unsigned char count = 0,flag = 0;

void select_xt2(void){

unsigned char i;

/*------选择系统主时钟为8MHz-------*/

    BCSCTL1 &= ~XT2OFF;                 

do{    

    IFG1 &= ~OFIFG;                  //清除晶振失败标志

        for (i = 0xFF; i > 0; i--);     //等待8MHz晶体起振

    }while ((IFG1 & OFIFG));             

    BCSCTL2 |= SELM_2 + SELS  ;        //MCLK和SMCLK选择高频晶振

 

}

 

 

void main(){

WDTCTL = WDTPW + WDTHOLD; // 关狗

select_xt2(); //8MHz晶振

P2DIR = 0xFF;

P2OUT = 0x00;

CCTL0 = 0X0010;          // CCR0 中断使能,或写为 CCTL0 = CCIE;

  CCR0 = 10000;

  TACTL = 0X02E0;        // SMCLK = 1MHz, 连续计数模式

_EINT();        // 开启全局中断

while(1){

if(count == 50){

count = 0;

P2OUT  = ~P2OUT ;

        

}

}

 

}

 

// Timer A0 中断服务函数

#pragma vector=TIMERA0_VECTOR

__interrupt void Timer_A (void)

{

  count ++;

  CCR0 += 10000;            // 下次中断时间装入CCR0中

}

我是比较 喜欢直接配置寄存器而不是使用库函数进行与或,所以在设置TACTL时


根据需要:1.使用8分频将8MHz变为1MHz


2.使用SMCLK子系统时钟,在设置xtal2中SMCLK和MCLK一样是外部晶振8MHZ


3.使用连续计数模式,此模式要手动重装


其余位均为0


所以TACTL控制字为:


0000,0010,1110,0000


02E0


CCTL0寄存器配置:、


因为我们是使用比较模式,开启中断,所以只有CCIEx位为1,其余全为0


控制字为:0X0010。此时也可以直接写出CCTL0 = CCIE0;不过我还是喜欢配置寄存器来写


CCR0中装入计数初值10000,当计数到10000,count加一,重装CCR0。当count等于50时,count=0

推荐阅读

史海拾趣

Alpha Semiconductor公司的发展小趣事

1994年,Alpha Semiconductor迎来了另一个重要的里程碑——公司成功研发出了自己的电源管理产品。这一产品的推出标志着Alpha Semiconductor在半导体技术领域的自主创新能力得到了显著提升。电源管理产品的成功研发不仅为公司带来了可观的收益,也进一步巩固了Alpha Semiconductor在半导体行业中的地位。

启臣微(Chip)公司的发展小趣事

在产品质量方面,启臣微始终坚持严格的标准和精细的工艺流程。公司建立了一套完善的质量管理体系,从原材料采购到产品出厂,每一个环节都经过严格把关。这种对品质的执着追求,让启臣微的产品在市场上赢得了良好的口碑,也为公司赢得了众多客户的信赖。

Electronicon Kondensatoren GmbH公司的发展小趣事

ELECTRONICON Kondensatoren GmbH,其前身为RFT Kondensatorenwerk Gera,于20世纪30年代末与德国图林根东部的Gera的电容器制造商建立了紧密的合作。自此,ELECTRONICON开始崭露头角,专注于电容器技术的研发与生产。公司始终将产品的质量和可靠性作为核心理念,为未来的发展奠定了坚实的基础。

Advanced Thermal Solutions公司的发展小趣事

ATS公司成立于1989年,最初是一家专注于电子产品热管理咨询的公司。创始人团队凭借其深厚的电子工程背景和敏锐的市场洞察力,识别到电子产品热管理领域的潜在机遇。经过数月的研究和开发,ATS成功研发出了一种新型散热技术,显著提高了电子设备的散热效率。这一技术突破迅速赢得了市场的认可,ATS开始收到来自各大电子产品制造商的咨询和合作请求。

Global Mixed-Mode Technology Inc公司的发展小趣事
报警灯的颜色和数量可以根据实际需求来设定。通常,为了区分不同的缺相情况,可以使用不同颜色的报警灯来对应不同的缺相相别。例如,黄色灯表示L1相缺相,绿色灯表示L2相缺相,红色灯表示L3相缺相。数量上,一般至少需要一个报警灯来指示缺相状态,但也可以设置多个报警灯以增加冗余或提供额外的视觉提示。
GeneSiC Semiconductor公司的发展小趣事
三相缺相报警灯电路的工作原理基于三相电的平衡性。当三相电中的任意一相缺失时,会导致电路不平衡,从而触发报警机制。通常,该电路会使用中间继电器或专门的缺相检测芯片来监测三相电的电压情况。一旦检测到缺相,就会通过继电器或芯片的控制,使报警灯亮起或发出声音警报,以提醒用户及时处理。

问答坊 | AI 解惑

求助强人!!有做过复合频率信号频率计的帮个忙!!

本帖最后由 paulhyde 于 2014-9-15 09:19 编辑 一、任务 测量两个正弦信号的叠加信号,其中,x1是主信号,幅值为 V(偏置为0V),频率为:20-20kHz;x2是次要信号,幅值为主信号的1/4-1/6,频率为:20-20kHz;二、要求 1.基本要求 (1)利用两个 ...…

查看全部问答>

五一快到了!发段汇编程序的问题给大家爽爽!

哈哈!我骗大家进来的,没什么爽的 问题是这样的:在PXA270上我跑这段程序:入口地址选为0X0(即NORFLASH的地址) xlli_GPIOREGS_PA_BASE EQU 0x40e00000 xlli_GAFR0_L_offset   EQU 0x00000054 xlli_GPDR0_offset     ...…

查看全部问答>

程序效率的问题

我使用.Net写的一个程序,里面有很多自定义控件,和一些用户控件,程序启动很慢,至少一分钟,希望各位给一些意见 先谢谢大家了…

查看全部问答>

低价转让友善之臂QQ2440V3开发板+LCD3.5液晶屏

具体请看taobao上的介绍 http://auction1.taobao.com/auction/item_detail-0db2-5a0abc7b0e70e1f7ae53ffad3582dfc4.jhtml 配件清单: 1) S3C2440核心板一片,配置64MB NAND FLASH和64MB SDRAM 2) S3C2440开发板底板一片 3) 直连九针串口线一条 ...…

查看全部问答>

求2410的cs8900的vxworks的驱动,有重谢。

求2410的cs8900的vxworks的驱动,有重谢。 cumedl@gmail.com,请联系。…

查看全部问答>

'CHtmlView' : base class undefined

我在evc下pocketPC模拟器,在一个窗口上要显示网页内容,使用了CHtmlCtrl类 http://dev.yesky.com/128/2272128_1.shtml 这个是国外某达人写的。 我在stdafx.h中已经加了#include \"afxhtml.h\",但是编译后提示我 \'CHtmlView\' : base class u ...…

查看全部问答>

AVR单片机c语言编程风格

AVR单片机c语言编程风格…

查看全部问答>

F149内部AD的电压问题

我今天用一个探测火源的模块去接F149的内部AD,我用3.3V给火焰传感器模块供电,输出脚悬空的时候我测输出脚是0到3V之间在变化(就是当没有火源或者火源超过探测范围的时候是3V),但我接上F149的AD的输入脚之后本来的3V输出就立即衰减为1.7V了。然 ...…

查看全部问答>

跪求大神给个G2553连接DHT11的完整程序

我想用串口调试助手检测DHT11测到的数据,无奈水平太菜,所以跪求大神们帮助。…

查看全部问答>

Solder Mask和Solder Mask的区别和解释

Solder Mask就是阻焊层,所有需要焊接的焊盘,铜皮需要的。paste Mask是SMD钢网层,对于需要汇流焊的焊盘的。回流焊的工艺过程是,刷锡膏,贴片,然后过回流焊机。Solder Mask是制造PCB的要求,Paste Mask是PCB组装的要求。 Solder Mask一般比焊盘 ...…

查看全部问答>