程序1
#include void main(void) { WDTCTL = WDTPW + WDTHOLD; // 停止看门狗 FLL_CTL0 |= XCAP18PF; // 配置晶振负载电容 P1DIR |= BIT3; // 设置P1.3为输出脚 TACCTL0 |= CCIE; // 允许比较/捕获模块0的中断 TACCR0 = 3277-1; //100ms约3277个ACLK周期 TACTL = TASSEL_1 + MC_1; //TA设为增计数模式,时钟=ACLK _EINT(); LPM3; } #pragma vector=TIMERA0_VECTOR __interrupt void TACCR0_ISR (void) // 计至TACCR0中断 { P1OUT ^= BIT3; // P1.3取反 } 程序2 #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // 停止看门狗 FLL_CTL0 |= XCAP18PF; // 配置晶振负载电容 P1DIR |= BIT3+BIT1+BIT4; // 设置P1.3、P1.1、P1.4为输出脚 TACCR0 = 32768-1; // 1秒=32768个ACLK周期 TACCR1 = 6554-1; // 0.2秒=6554个ACLK周期 TACCR2 = 29938-1; // 0.7秒=29938个ACLK周期 TACTL = TASSEL_1 + MC_1; // TA设为增计数模式,时钟=ACLK TACTL |= TAIE; // 允许TA溢出中断 TACCTL1 |= CCIE; // 允许比较/捕获模块1的中断 TACCTL2 |= CCIE; // 允许比较/捕获模块2的中断 _EINT(); while(1) { // CPU可以执行其他任务 } } #pragma vector=TIMERA1_VECTOR __interrupt void TA_ISR(void) { switch( TAIV ) { case 2: P1OUT &=~( BIT3+BIT1+BIT4); P1OUT |= BIT1; //TACCR1~TACCR2阶段只亮绿灯 break; case 4: P1OUT &=~( BIT3+BIT1+BIT4); P1OUT |= BIT4; //TACCR2~0阶段只亮蓝灯 break; case 10: P1OUT &=~( BIT3+BIT1+BIT4); P1OUT |= BIT3; //0~TACCR1阶段只亮红灯 break; } } 程序3 #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // 停止看门狗 FLL_CTL0 |= XCAP18PF; // 配置晶振负载电容 P1DIR |= BIT3 + BIT4; // 设置P1.3、P1.4为输出脚 TACTL |= MC_1 + TASSEL_1 + ID_0; //定时器TA设为增量计数模式,ACLK TACCR0=328-1; //PWM总周期 =328个ACLK周期约等于100Hz TACCR1=246; //TA1占空比 = 246/328= 75% TACCR2=164; //TA2占空比 = 164/328= 50% TACTL |= TAIE; // 允许TA溢出中断 TACCTL1 |= CCIE; // 允许比较/捕获模块1的中断 TACCTL2 |= CCIE; // 允许比较/捕获模块2的中断 _EINT(); while(1) { //... ... // CPU可以执行其他任务 } } #pragma vector=TIMERA1_VECTOR __interrupt void TA_ISR(void) { switch( TAIV ) { case 2: P1OUT &=~ BIT3; //计至TACCR1,P1.3置低 break; case 4: P1OUT &=~ BIT4; //计至TACCR2,P1.4置低 break; case 10: P1OUT |=( BIT3 + BIT4); //计至TACCR0,置高 break; } } 程序4 #include int Result; int TA_OverflowCnt; //TA溢出次数存放变量 unsigned long int ExeTime; //执行时间存放变量 /**************************************************************** 运行时间待测函数1:求两个浮点数之和 ****************************************************************/ float FloatSum(float x ,float y) /*226个指令周期*/ { return(x+y); } /**************************************************************** 运行时间待测函数2:求两个定点数之和 ****************************************************************/ int IntSum(int x ,int y) /*17个指令周期*/ { return(x+y); } /**************************************************************** 运行时间待测函数3: 软件延时 ****************************************************************/ void Delay() /*774030个指令周期*/ { int i,j; for(i=0;i<1234;i++) { for(j=0;j<123;j++); } } void main(void) { WDTCTL = WDTPW + WDTHOLD; // 停止看门狗 FLL_CTL0 |= XCAP18PF; // 配置晶振负载电容 _EINT(); // 总中断允许 while(1) { //-------------------------测量定时器的固有延迟------------------------- TACTL = TASSEL_2 + MC_2 + TAIE + TACLR; // TA清零并开始计时 TACTL = TASSEL_2 + MC_0; // TA停止计时 ExeTime=TAR; // 读取TA计数值,就是固有延迟时间 _NOP(); // 在这一行设断点观察 //-----------------------测量浮点求和函数的执行时间---------------------- TACTL = TASSEL_2 + MC_2 + TAIE + TACLR; // TA清零并开始计时 Result=FloatSum(12345 ,12456); // 执行待测函数1 TACTL = TASSEL_2 + MC_0; // TA停止计时 ExeTime=TAR; // 读取TA计数值,就是执行时间 _NOP(); // 在这一行设断点观察 //-----------------------测量定点求和函数的执行时间------------------- TACTL = TASSEL_2 + MC_2 + TAIE + TACLR; // TA清零并开始计时 Result= IntSum(12345 ,12456); // 执行待测函数2 TACTL = TASSEL_2 + MC_0; // TA停止计时 ExeTime=TAR; // 读取TA计数值,就是执行时间 _NOP(); // 在这一行设断点观察 //----------------------测量延迟和函数的执行时间-------------------- TA_OverflowCnt=0; // 长执行时间函数TA会溢出,用一变量计数溢出次数 TACTL = TASSEL_2 + MC_2 + TAIE + TACLR; // TA清零并开始计时 Delay(); // 执行待测函数3 TACTL = TASSEL_2 + MC_0; // TA停止计时 ExeTime=TA_OverflowCnt*65536+TAR; // 读取TA计数值及溢出次数,计算执行时间
上一篇:msp430f5529 MCP4725程序
下一篇:msp430超声波测距源程序 1602显示
推荐阅读最新更新时间:2024-10-23 15:29
设计资源 培训 开发板 精华推荐
- 使用 ON Semiconductor 的 ADP3182 的参考设计
- LTC485 低功耗 RS485 接口收发器的典型应用
- 使用 Microchip Technology 的 TCL1117 的参考设计
- 使用 Analog Devices 的 LTC1539CGW 的参考设计
- 具有基本抑制功能的 LF15ABDT-TR 1.5V 低压降稳压器的典型应用
- 【训练营】无敌机器狗
- 核心板-CH554G
- Sp6669、1.5-Mhz、600Ma 固定同步降压转换器的典型应用
- LT3990HMSE 5V、2MHz 降压转换器的典型应用
- ADP2441 降压型 DC 至 DC 稳压器,具有 4.5 V 至 36 V 的宽输入电压范围
- 有奖直播|TI DLP® 技术如何推动AR HUD和汽车大灯的发展
- 美信基础模拟IC APP下载 助力您创新模拟设计!评论、抢楼全有礼!
- TI 嵌入式处理主题直播月|报名观看直播赢好礼【低功耗WiFi MCU、Sitara AM57X平台、机器学习】
- 看视频抽好礼:Type-C承载的高速串行标准,功能多样,挑战也不小
- 有奖直播|魏德米勒 OMNIMATE® 联接技术的创新发展
- 下载安森美半导体 KNX 技术文档赢精美礼品!
- 有奖直播:基于DLP® Pico™技术的TI桌面级DLP 3D打印、3D扫描及工业显示应用
- 邀请好友加入19国赛交流群,瓜分千元现金大礼!
- “玄铁杯”第三届RISC-V应用创新大赛—国产高性能RISC-V Linux开发板LicheePi 4A报名专场,万元奖金,邀您奔赴开源设计盛宴
- 评论有礼|【Discovery 】走进TI毫米波雷达世界 快速获得设计技能