AI32G12K128的RTC功能如何处理任意秒钟中断?| 已解决
RTC计时中断有日中断、时中断和秒中断等中断功能,秒中断服务函数为:void RTC_Isr() interrupt 13
{
if(RTCIF&0x08)
{
RTCIF &=~0x08;
B1S_Flag=1;
}
}
但是我想利用RTC实现3秒中断(减少宝贵定时器的使用),以便为主程序中调用其它程序所用,但是始终不得其法,达不到想要的结果。我的中断程序如下:
bit B3S_Flag;//3秒中断标志位,全局变量
void RTC_Isr() interrupt 13
{
unsigned char Xs;
if(RTCIF&0x08)
{
Xs++;
RTCIF &=~0x08;
B1S_Flag=1;
if(Xs==3)
{
Xs=0;
B3S_Flag=1;
}
}
}
请老师们诊断程序哪里有问题并请给出解决方案或程序,谢谢大佬们!
就是使用1s中断来实现的啊。xs要先赋值。 3秒中断,就是秒中断然后在中断中计数,计3个数执行一次操作 问题是缺少static,导致每次退出函数时内存被释放,变量作废
static unsigned char Xs;
就好了
DebugLab 发表于 2024-9-25 18:47
问题是缺少static,导致每次退出函数时内存被释放,变量作废
static unsigned char Xs;
不是应该static unsigned char Xs = 0;这样写吗 本帖最后由 Tuier 于 2024-9-25 22:24 编辑
DebugLab 发表于 2024-9-25 18:47
问题是缺少static,导致每次退出函数时内存被释放,变量作废
static unsigned char Xs;
非常感谢,加上static,问题解决!大佬就是不一样,一个关键字,新手想破脑袋也不一定想得到。{:4_250:} 这种要么是全局,要么是静态 楼主主要还是对C语言不熟练的原因 小飞侠 发表于 2024-9-26 07:43
楼主主要还是对C语言不熟练的原因
是的{:4_226:} jwd 发表于 2024-9-26 06:30
这种要么是全局,要么是静态
{:4_196:}{:4_250:}
页:
[1]
2