MSP430F149的TIMERA定时中断理解

2023-12-29 11:58

本文主要是介绍MSP430F149的TIMERA定时中断理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

代码如下:

//本平台 msp430f149
#include <io430.h>
#include <in430.h>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

这篇关于MSP430F149的TIMERA定时中断理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/549374

相关文章

MySQL 定时新增分区的实现示例

《MySQL定时新增分区的实现示例》本文主要介绍了通过存储过程和定时任务实现MySQL分区的自动创建,解决大数据量下手动维护的繁琐问题,具有一定的参考价值,感兴趣的可以了解一下... mysql创建好分区之后,有时候会需要自动创建分区。比如,一些表数据量非常大,有些数据是热点数据,按照日期分区MululbU

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

在Golang中实现定时任务的几种高效方法

《在Golang中实现定时任务的几种高效方法》本文将详细介绍在Golang中实现定时任务的几种高效方法,包括time包中的Ticker和Timer、第三方库cron的使用,以及基于channel和go... 目录背景介绍目的和范围预期读者文档结构概述术语表核心概念与联系故事引入核心概念解释核心概念之间的关系

Django之定时任务django-crontab的实现

《Django之定时任务django-crontab的实现》Django可以使用第三方库如django-crontab来实现定时任务的调度,本文主要介绍了Django之定时任务django-cront... 目录crontab安装django-crontab注册应用定时时间格式定时时间示例设置定时任务@符号

spring IOC的理解之原理和实现过程

《springIOC的理解之原理和实现过程》:本文主要介绍springIOC的理解之原理和实现过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、IoC 核心概念二、核心原理1. 容器架构2. 核心组件3. 工作流程三、关键实现机制1. Bean生命周期2.

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

python logging模块详解及其日志定时清理方式

《pythonlogging模块详解及其日志定时清理方式》:本文主要介绍pythonlogging模块详解及其日志定时清理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录python logging模块及日志定时清理1.创建logger对象2.logging.basicCo