MSP430 中断问题
你好,我这里有430f149的程序,有点不明白,希望你能给我解释一下。#include<msp430g2211.h>voidmain(void){WDTCTL=WDTPW...
你好,我这里有430f149的程序,有点不明白,希望你能给我解释一下。
#include <msp430g2211.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
P1DIR |= 0x01; // Set P1.0 to output direction
P1IE |= 0x08; // P1.3 interrupt enabled
P1IES |= 0x08; // P1.3 Hi/lo edge
P1IFG &= ~0x08; // P1.3 IFG cleared
_BIS_SR(LPM4_bits + GIE); // Enter LPM4 w/interrupt
}
// Port 1 interrupt service routine
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
P1OUT ^= 0x01; // P1.0 = toggle
P1IFG &= ~0x08; // P1.3 IFG cleared
}
在上面的代码中,有个 P1IES |= 0x08; ---------------后面的注释为P1.3 Hi/lo edge,我不明白,为啥
0x08代表p1.3,我在msp430g2211.h头文件里找到,bit3的值为#define BIT3 (0x0008u),这中间少个0,值肯定不一样,
那P1IES |= 0x08;代表啥? 展开
#include <msp430g2211.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
P1DIR |= 0x01; // Set P1.0 to output direction
P1IE |= 0x08; // P1.3 interrupt enabled
P1IES |= 0x08; // P1.3 Hi/lo edge
P1IFG &= ~0x08; // P1.3 IFG cleared
_BIS_SR(LPM4_bits + GIE); // Enter LPM4 w/interrupt
}
// Port 1 interrupt service routine
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
P1OUT ^= 0x01; // P1.0 = toggle
P1IFG &= ~0x08; // P1.3 IFG cleared
}
在上面的代码中,有个 P1IES |= 0x08; ---------------后面的注释为P1.3 Hi/lo edge,我不明白,为啥
0x08代表p1.3,我在msp430g2211.h头文件里找到,bit3的值为#define BIT3 (0x0008u),这中间少个0,值肯定不一样,
那P1IES |= 0x08;代表啥? 展开
展开全部
f149要用f149的头文件啦,不过在你这个IO中断程序里用g2211的貌似不影响;
P1IES |= 0x08是把P1IES的第4位置1,第4位刚好对应P1.3,P1IES是中断中断触发方向寄存器,置1是下降沿触发中断;
0x08是0b00001000,对应P1.3;
类似的:
0x01是0b00000001,对应P1.0;
0x02是0b00000010,对应P1.1;
0x04是0b00000100,对应P1.2依次类推,规律挺明显的。
P1IES |= 0x08是把P1IES的第4位置1,第4位刚好对应P1.3,P1IES是中断中断触发方向寄存器,置1是下降沿触发中断;
0x08是0b00001000,对应P1.3;
类似的:
0x01是0b00000001,对应P1.0;
0x02是0b00000010,对应P1.1;
0x04是0b00000100,对应P1.2依次类推,规律挺明显的。
追问
能不能在再问一个问题?
我在看MP430的书时,关于ADC12那章,上面有一段话:
“用看门狗间隔定时器,时钟用ACLK=32768Hz,8分频,间隔时间8s”,
1---这里ACLK=32768Hz,8分频是不是32768/8?
2---而那个间隔时间8s怎样计算出来的?能不能举例说明一下分频的计算。。谢谢
追答
有点乱,没太看明白...
我猜应该是ACLK时钟是32768Hz,将ACLK设为看门狗时钟源,然后用看门狗的定时器模式,定时时间选了时钟源/32768,就是1s一次,然后再做8分频,时间间隔就是8s一次了。
也不清楚你看的书里的8分频是怎么做的,反正看门狗定时器只能做64,512,8192,32768这四种整数分频。可能是软件实现的8分频吧...
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询