Freescale中MC9S12DG128单片机的中断程序标识问题

[复制链接]
1237|5
手机看帖
扫描二维码
随时随地手机跟帖
dirtwillfly| | 2017-9-14 21:09 | 显示全部楼层
你用过51或者其他单片机吗?
如果你用过,这个问题就很简单了。你看一下使用中断的例程就能明白https://wenku.baidu.com/view/808b4a064a7302768e99398d.html

使用特权

评论回复
剡溪渡口| | 2017-10-11 09:18 | 显示全部楼层
dirtwillfly 发表于 2017-9-14 21:09
你用过51或者其他单片机吗?
如果你用过,这个问题就很简单了。你看一下使用中断的例程就能明白https://wen ...

你好,我现在用的S12ZVC单片机,自己写中断时遇到编译后警告的情况。
因为之前的代码都是用PE生成的,将PAD6,7,8,9设置成了AD采样功能,由于唤醒要求,将这4个引脚在休眠前设置成按键唤醒模式,代码如下(仅以PAD8为例):

static void ADtoKWAD_Config(void)
{
        DDRAD_DDRADH0 = 0U;            //Configure PAD8 as input.
        DIENAD_DIENADH0 = 1U;          //PAD8 configured as digital input.
        PERAD_PERADH0 = 1U;            //Pull device enabled.
        PPSAD_PPSADH0 = 0U;            //Pullup device selected;falling edge selected.
        PIEAD_PIEADH0 = 1U;            //Interrupt is enabled.
}


并在休眠前调用该函数
ADtoKWAD_Config();                //170629-yyy休眠前将按键AD配置为按键唤醒.
MSCAN0_SetSleepRequest();        //CAN0CTL0_SLPRQ = 1; //sleep mode request.
while(MSCAN0_GetSleepAck() == 0U) {}        //wait for acknowledge of sleep mode,CAN0CTL1_SLPAK=1.
Cpu_SetStopMode();


对应的按键唤醒中断函数:
#pragma CODE_SEG __NEAR_SEG NON_BANKED    //中断函数置于非分页区内.
void interrupt VectorNumber_Vportad KEY_WAKEUP_ISR(void)
{
        PIFAD_PIFADH0 = 1U;
        KvsCANSleep_Count = 0U;
}
#pragma CODE_SEG DEFAULT   //后续代码置于默认区域内.


编译后警告function has no prototype,并且无法debug提示encountered a problem


使用特权

评论回复
dirtwillfly| | 2017-10-11 09:21 | 显示全部楼层
剡溪渡口 发表于 2017-10-11 09:18
你好,我现在用的S12ZVC单片机,自己写中断时遇到编译后警告的情况。
因为之前的代码都是用PE生成的,将P ...

在使用函数之前要声明函数。你看看警告的是那个函数没声明

使用特权

评论回复
剡溪渡口| | 2017-10-11 13:49 | 显示全部楼层
dirtwillfly 发表于 2017-10-11 09:21
在使用函数之前要声明函数。你看看警告的是那个函数没声明

中断函数需要声明吗?而且我也是写在main函数之前的位置。
我新建一个不用PE的工程,设置一个按键中断,虽然编译时候也有同样的警告,但是可以debug,应该是在使用PE后中断函数编写的方法不对的问题,但是具体什么方法,我还不知道。

使用特权

评论回复
dirtwillfly| | 2017-10-11 14:02 | 显示全部楼层
剡溪渡口 发表于 2017-10-11 13:49
中断函数需要声明吗?而且我也是写在main函数之前的位置。
我新建一个不用PE的工程,设置一个按键中断, ...

中断函数不用声明。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝