请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430F5529 工具/软件:Code Composer Studio
我正在尝试使用C代码来为中断服务例程使用实例代码。 我正在尝试非常基本的例子,但我无法让它们发挥作用。
这个例子只要1.1 按下了WFP针脚的按钮,就会调用中断,在ISR中,我只需要切换WFP针1.0 脚的LED。
我运行编译并运行此代码,我得到以下情况:
1) C程序执行并在无限的while循环中循环-正如预期的那样。
2)按下按钮时,程序跳转至某个位置。 指示灯未切换,拆卸时显示其当前位于地址0x44,并且正在执行的命令是JMP 0x0044。 因此,在按下按钮后,它不会恢复。
这是最基本的例子,我无法让它发挥作用。
我不知道您是否必须以某种方式告诉链接器存在interrupT.asm文件。 我刚刚创建了一个新的文件I代码编写器工作室。
为什么会发生这种情况?
感谢你的帮助。
下面是C代码:(main.c)
#include <MSP430-h>
int main(void)
{
WDTCTL = WDTPW + WDTHOLD; //停止看门狗计时器
P1DIR || BIT0; //将WFP 1.0 设置为输出方向-> LED
P1REN |= BIT1; //启用WFP 1.1 内部电阻
P1OUT |= BIT1; //将WFP 1.1 设置为防拉电阻
P1IES |= BIT1; // WFP 1.1 Hi-Lo edge
P1IFG &=~BIT1; //粮农组织1.1 IFG已清除
P1IE |= BIT1; //已启用WFP 1.1 中断
__bis_sr_register (GIE); //启用中断
While (1);
}
下面是组件:(interrup.asm-)
.cdecls C,list,"msp430f5529.h" .text Port_1 XOR.b #001h,P1OUT mov.b #0h,P1IFG .sect .int47 .short Port_1 .end