MSP430F5438A中断问题

发布者:iota19最新更新时间:2020-04-22 来源: eefocus关键字:MSP430F5438A  中断问题  时钟源 手机看文章 扫描二维码
随时随地手机看文章

MSP430F5438A中断问题

写一个简单程序进入中断,首先进入中断的条件:


1.时钟源配置好


2.中断的寄存器配置好


3.中断向量表配置好


以上三点都配置好是不是就应该进入中断了?帮忙看看下面的程序进不去中断,我用的是捕获模式,捕获引脚1.4有捕获信号。


#include “msp430.h”

void Init_MCLK(void);

int main( void )

{

// Stop watchdog timer to prevent time out reset

WDTCTL = WDTPW + WDTHOLD;

P5DIR |= BIT4;

P5OUT |= BIT4;


Init_MCLK();

P1DIR &= ~BIT4;

P1SEL |= BIT4;


            TA0CTL= TASSEL1+TACLR + ID_2+MC1; //时钟源 SMCLK+ 定时器清除位 + 4分频  + 连续模式:计时器计数到ffh             

            TA0EX0=TAIDEX_2;

            TA0CCTL3=SCS + CAP; //同步捕获 + 捕获模式

            TA0CCTL3 |= CM_1;    /*上升沿捕获*/

            TA0CCTL3 |= CCIE;   //捕获中断使能               

            TA0CTL |=TAIE;   


while(1);

return 0;

}

void Init_MCLK(void)

{

unsigned char i;

PMMCTL0 =PMMPW+PMMCOREV0;

P5SEL |= 0x0C ; // 端口功能选择振荡器

UCSCTL6 &= ~XT2OFF ; // 振荡器使能

UCSCTL3 |= SELREF_2 ; // FLLref = REFO

UCSCTL4 |= SELA_2 ; // ACLK=REFO,SMCLK=DCO,MCLK=DCO

do

{

UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); // 清除 XT2,XT1,DCO 错误标志

SFRIFG1 &= ~OFIFG ;

for (i = 0xFF; i > 0; i–);

}while(SFRIFG1&OFIFG) ; // 检测振荡器错误标志

UCSCTL6 |= XT2DRIVE0 ; // XT2 驱动模式 8~16MHz

UCSCTL4 |= SELS_5 + SELM_5 ; // SMCLK = MCLK = XT2

}

#pragma vector=TIMER0_A1_VECTOR

__interrupt void TimerA0_3(void)

{

// LPM4_EXIT;

unsigned char i;

for (i = 0xFF; i > 0; i–);


}

关键字:MSP430F5438A  中断问题  时钟源 引用地址:MSP430F5438A中断问题

上一篇:MSP430F5438A中断系统
下一篇:基于MSP430F5438A的OV7670简单驱动程序

推荐阅读最新更新时间:2024-11-12 13:36

MSP430F5438A单片机低功耗设置
MSP430F5438A单片机低功耗设置,以进入LPM3为例: 1、MSP430F5438A外部时钟分别为8M和32.768,程序正常运行时选择8M主时钟,当程序需要进入低功耗时,需要将主时钟切换为32.768,代码如下(自己试着改的。。) void InitClock() { WDTCTL = WDTPW + WDTHOLD; // Stop WDT //P11DIR |= 0x07; // ACLK, MCLK, SMCLK set out to pins //P11SEL |= 0x07; // P11.0,1,2 for debugging purposes. __bis_SR_regist
[单片机]
MSP430应用技巧7:MSP430F5438A时钟的设置
使用MSP430F5438A,XT2外接25MHz晶振,编写时钟驱动程序,不能正常工作,现将此代码粘贴出来。 这段代码将MCLK、SMCLK和ACLK都设置为XT2,已达到性能的最优化。其关键代码均以做了解释。但是,此程序不能正常工作,仔细查看TI官方手册,问题出现在CPU内部VCore没有正确设置。 MSP430的5xx系列和6xx系列,芯片内部集成线性稳压器,可以将外部电压降压为更低的电压以节省功耗,但是VCore降低会使CPU速度减慢,所以为了达到CPU的运行速度需与VCore电压相匹配。其匹配表如下图所示。 根据这张表,就可知道如果希望CPU在25MHz运行,需将PMMCOREV标志位设置为3。更改后的代码如下
[单片机]
MSP430应用技巧7:<font color='red'>MSP430F5438A</font>时钟的设置
浅谈ARM Cortex-M0/M0+ 中的中断抢占问题
简介:Cortex-M0/M0+, M3/M4 中的中断控制器英文名叫做NVIC,Nested Vectored Interrupt Controller,翻译过来就是嵌套向量中断控制器,所谓中断嵌套是指当正在执行一个中断服务程序时,这时如果来了优先级更高的中断,新来的中断会打断原来还没有处理完的中断服务程序,等新中断处理完毕之后再回到原中断服务继续处理。 下面让我们在Kinetis KL26芯片上来实际操作一把吧。KL26芯片为ARM Cortex M0+内核。 硬件:FRDM_KL26Z 软件:FRDM-KL26Z_SC_Rev_1.0 + IAR7.4 1) 先做第一个实验:程序中开启了两个定时器,一个为TP
[单片机]
iOS6升级后WIFI连接中断问题修复方法
9月20日,苹果正式向所有iOS设备用户推送iOS 6,iOS 6带来了超过200项调整和改进,包括苹果的自主地图服务、Passbook 以及经过改进的新版Siri。然而近来,许多用户称,在升级之后WiFi连接出现问题,WiFi经常连接不上,或者连接上WiFi之后经常中断。这可怎么办呢?下面我们给大家介绍了几种修复方法。   临时修复方法   方法一:进入“设置-WiFi-选择你的WiFi网络”改后的IP地址和管理员登录名、密码。在浏览器中,输入路由器IP地址,并在弹出的提示框中,输入管理员登录名和密码。一般在最下方,会以有系统工具一栏,点击会出现“软件升级”的选项。在软件升级里,会出现当前软件版本和硬件版本的提示,根据硬件版
[模拟电子]
iOS6升级后WIFI连接<font color='red'>中断</font><font color='red'>问题</font>修复方法
ARM Cortex-M4和Cortex-M0+中断优先级及嵌套抢占问题
  对于中断优先级配置的需求实际上主要体现在系统存在多个可能的中断源情况下,这时为了保证代码的可靠执行,我们不得不考虑很现实的两个问题,一个是如果两个以上中断同时发生,pending请求到CPU,CPU决策该先进哪一个相应的中断服务Routine,第二个问题是CPU当前已经在响应某个中断服务,此时来了另一个中断请求,是否允许其打断当前中断服务转而响应新的中断请求即我们常说的中断嵌套问题,不要告诉我没考虑过哈(如果真是这样,我只能不客气的说,这样搞单片机是不负责任的,很可能给项目带来潜在的风险bug),那样的话俺也白写了,呵呵。那正题来了,对现在红红火火的ARM Cortex-M4和M0+两个核来说,他们是如何解决这两个问题的呢,因
[单片机]
USART模块接收中断问题处理
问题描述: 在使用USART做串口通讯时,我只把接收中断打开,并设置抢占优先级为最低一个级别,而接收中断上一个优先级处理事情比较多,可能占用了2ms时间。当我使用9600波特率往下位机发送数据,速度非常快,就是一直按回车发!问题就出来,不到1分钟时间,通讯没有反应了。USART配置代码如下: void uart_config(void) { USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate = UART_GetBaud(BaudRate); USART_InitStructure.USART_WordLength =
[单片机]
USART模块接收<font color='red'>中断</font>的<font color='red'>问题</font>处理
stm8 停机模式与外部中断唤醒中一个小问题
做了一个简单的项目,电路板使用电池供电,需要系统在待机时低功耗。而对外接口只有4个按键,也就是唤醒必须要通过这四个按键。 系统功能就不介绍了,只给出进入低功耗的代码和退出低功耗的代码。 使用芯片为stm8s103 1 /***************************************************************** 2 //进入到停机模式 3 *****************************************************************/ 4 void EnterHalt() 5 { 6 int j=255; 7 8 /*
[单片机]
s3c6410外部中断号与引脚问题
在编写Linux驱动程序时。我想用某一个引脚做外部中断。可是在调用 int request_irq(unsigned int irq, void (*handler)(int irq, void *dev_id, struct pt_regs *regs ), unsigned long irqflags, const char * devname, void *dev_id); 这个函数的时候遇到了一个问题,irq是个硬件终端号,可是究竟这个引脚相应的终端号是多少呢? 我在网上找资料说的都稀里糊涂的,不是我想要的答案。 于是我便在内核代码里找,以下贴出Linux内核代码的一段archarmmach-s3c6
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved