定时器与中断

系统正常运行,当发生某个特定具有优先级的事件,系统目前正在运行的任务暂停,去执行中断事件服务函数,一般可在中断服务函数中进行一个计数操作,或者完成某个完整的工作。

而定时器与中断有什么关系呢,它可以设置的是一个检测频率,检测某个事件是否发生。若设置定时器为1S,则1s执行一次中断判断事件是否发生,发生,则执行中断服务函数内部逻辑。

代码一:LED闪烁

要实现的功能是:LED每500ms切换一次状态,即500ms亮、500ms灭,循环。

先对LED、对定时器进行初始化,然后写入中断函数。

* 使用TA0,CCR0
         * TACK = SMCLK/1 = 1M, 1/1M = 1us,计数500ms,即配置TA0CCR0 = 500000。

当定时器到500000时,即时间过去了500ms,这个时候判断中断服务函数的条件,执行函数内部的逻辑,使LED灯的电平发生翻转。


#include <msp430.h>
int main(void)
{WDTCTL = WDTPW | WDTHOLD;   //关闭“看门狗”//LED初始化P4DIR |= BIT7;              //初始化为输出P4OUT &= ~BIT0;             //初始化低电平//定时器初始化TA0CCTL0 = CCIE;            //使能CCR0中断TA0CCR0 = 500000;            //设置计数值,500000*1us=500msTA0CTL = TASSEL_2 + MC_1 + TACLR;       //选择时钟源,选择工作模式__bis_SR_register(LPM0_bits + GIE);     //全局中断,使用‘_EINT();’也可}//中断服务函数
#pragma vector = TIMER0_A0_VECTOR
__interrupt void TIMER0_A0_ISR(void)
{P4OUT ^= BIT7;  //每500ms,引脚输出取反
}

代码二:波形测试

#include"msp430.h"void main(void)
{WDTCTL = WDTPW+WDTHOLD;P1DIR |= BIT1;                         //设置P1.0为输出P8DIR |= BIT2;TA0CCTL0 = CCIE;                      //使能中断TA0CCR0 = 5000;TA0CTL = TASSEL_2 + MC_1 + TACLR;     //设置TA0,时钟源为SMCLK,计数模式为增计数,清零__bis_SR_register(LPM0_bits + GIE);   //进入低功耗,打开全局中断__no_operation();
}#pragma vector = TIMER0_A0_VECTOR
__interrupt void TIMER0_A0_ISR(void)      //任意选定管脚输出PWM波
{P1OUT ^= BIT1;P8OUT ^= BIT2;
}

修改TA0CCR0的值,如下,测量P1.2的输出波形,

TA0CCR0 = 500          //T=500us,f = 1053Hz
TA0CCR0 = 1000         //T=1000us,f = 523.6Hz
TA0CCR0 = 5000         //T=5000us,f = 105.3Hz
TA0CCR0 = 20000        //T=50000us,f = 10.5Hz

1. 当TA0CCR0 = 500时,T=500us,示波器测试结果如下图:

2.当TA0CCR0 = 1000时,T=1ms,示波器测试结果如下:

3.当TA0CCR0 = 5000时,T=5ms,示波器测试结果如下:

4.当TA0CCR0 =20000时,T=20ms,示波器测试结果如下:

这波形有过冲,好像质量不太好啊,得去检查一下子硬件了。。。

03:时钟与中断代码(LED闪烁与波形)【MSP430F5529】相关推荐

  1. 【MCU】基于STM32CubeMX定时器中断实现LED闪烁

    基于STM32CubeMX定时器中断实现 LED 闪烁 本实验基于STM32CubeMX实现对STM32开发板的配置,通过定时器中断实现 LED 闪烁. Table of Contents 基于STM ...

  2. 定时器中断控制LED闪烁(每隔1s)---普中科技开发仪

    定时器中断o,利用中断控制LED闪烁每隔1s闪烁一次(精确的1s) notes: (1)工作方式寄存器TMOD ,低四位用于To,高四位用于T1,(GATE,C/T- ,M1,M0) 一般让GATE ...

  3. Proteus:单片机定时器中断(LED闪烁)

    题目概述: 单片机定时器中断(LED闪烁). 编程: #include <reg51.h> #define uchar unsigned char #define uint unsigne ...

  4. STM32之定时器中断控制LED闪烁

    上篇博客我们是用延时函数实现了LED的闪烁,今天我们使用STM32的定时器来使LED闪烁. 关于32的定时器的种类,今天我在这先不做过多的说明,有时间我会再另写一篇博客来专门介绍32的定时器.今天我们 ...

  5. MSP432E401Y-用定时器中断控制LED闪烁

    一.初始化以及初始化配置 要使用GPTM(GPIO_TIMER),必须先配置对应的RCGCTIMER寄存器中的TIMERn(分配时钟需求),如果同时信号要从对应的引脚输出则需要同时配置对应的RCGCG ...

  6. cubemx万年钟_一知半解学CubeMX——TIM:定时中断实现LED闪烁

    一知半解学习环境: 1.CubeMX 4.23.0 2.uVision 5.14.2 3.MCU 启明 STM32F407 开发板(高配版) V3.1 一知半解学习目标: 1.掌握CubeMX下RCC ...

  7. 定时器中断程序控制led闪烁

    1 #include <reg52.h> 2 typedef unsigned char u8; 3 typedef unsigned int u16; 4 sbit led = P1^0 ...

  8. STM32通用定时器(原理、结构体、库函数、定时器中断每秒闪烁一次灯) —— 时钟源、分频值、重装载值

    参考:stm32定时器与定时器中断 作者:打酱油的 发布时间: 2021-04-11 01:04:09 网址:https://blog.csdn.net/weixin_46098612/article ...

  9. Holtek合泰单片机 《四》 从TM定时器中断到led灯1s闪烁

    跳过中断直接讲TM中断是不是有些超前了? 由于最近参加了一个项目,真是忙的不要不要的,没办法,只有抽了点放假的时间来更新下自己的博文,希望对正在学习HT单片机的同学有帮助. 重庆合泰初赛是5月15日, ...

最新文章

  1. 用java实现一个计算器程序_1.2第一个java程序——hello world
  2. 深入Java关键字instanceof
  3. python中语法错误-python冒号语法错误python中如何创建字典
  4. arduino串口绘图_一起打造一款光驱迷你绘图仪
  5. idea 无法打开项目_Premiere出现quot;项目看来已经损坏,无法打开”的解决方法...
  6. JS - javascript容错处理代码
  7. 云计算学习——Overlay网络技术概述
  8. 你只管打开这个网站,剩下的交给「卧槽」!
  9. 中国石油大学《化工原理二》第一阶段在线作业
  10. 虚拟机您的计算机无法启动,一键解决win10虚拟机无法启动的问题
  11. HTTP协议相关的网络经典五层模型
  12. Java实现PDF打印的解决方案
  13. 图文结合带你搞懂InnoDB MVCC
  14. Kali开机后的初始化配置
  15. Shadow 腾讯插件化——深度解剖框架设计
  16. Spring大白话(●—●)
  17. 华为云有没有实力挑战阿里云?
  18. 设计模式简单代码之Command模式(皇帝圣旨篇)
  19. 写给朝九晚五的上班族的一封信(转)
  20. maven中央仓库找不到jconsole-1.8.0.jar和tools-1.8.0.jar包

热门文章

  1. U盘独个文件不能超过4GB的原因——U盘的文件系统
  2. MySQL入门教程系列-1.1 数据库基础
  3. Sourcetree配置ssh客户端
  4. python或运算 条件_Python运算符及条件语句
  5. 继电器的吸和与释放电压
  6. WWN,WWNN,WWPN三者的区别
  7. php邮件服务器搭建,如何快速简单的使用Linux搭建邮件服务器
  8. redis数据库--学习笔记
  9. 百度地图API - 行车路线 轨迹
  10. FPGA基础知识 1(FPGA 内部结构)