stc8h8k64u用RTC是否会影响其他中断(如T1和INT0)的使用,我写程序似乎会这样
stc8h8k64u用RTC显示时分秒是否会影响其他中断(如T1 T0和INT0)的使用,我写程序似乎会这样,T0中断好像会运行一会,然后就用不了了这个是独立的,应该不会影响T0 应该不是片子的问题,,正确使用中断,你所说的中断我都一块用过,没有问题的。。可能是中断服务函数里干的事情多了吧。中断里的东西尽量少,在主函数循环中处理 我把这个函数注释掉之后中断能正常用,是因为这个里面有什么影响吗?
void RTC_config(void)
{
/*
INIHOUR = 23; //H:23
INIMIN = 59; //M:59
INISEC = 50; //S:50
INISSEC = 0; //S/128:0
ALAHOUR = 0; //闹钟小时
ALAMIN= 0; //闹钟分钟
ALASEC= 0; //闹钟秒
ALASSEC = 0; //闹钟1/128秒
//STC8H8K64U B版本芯片使用内部32K时钟,休眠无法唤醒
// IRC32KCR = 0x80; //启动内部32K晶振.
//while (!(IRC32KCR & 1));//等待时钟稳定
//RTCCFG = 0x03; //选择内部32K时钟源,触发RTC寄存器初始化
X32KCR = 0x80 + 0x40; //启动外部32K晶振, 低增益+0x00, 高增益+0x40.
while (!(X32KCR & 1));//等待时钟稳定
RTCCFG = 0x01; //选择外部32K时钟源,触发RTC寄存器初始化
RTCIF = 0x00; //清中断标志
RTCIEN = 0x88; //中断使能, 0x80:闹钟中断, 0x40:日中断, 0x20:小时中断, 0x10:分钟中断, 0x08:秒中断, 0x04:1/2秒中断, 0x02:1/8秒中断, 0x01:1/32秒中断
RTCCR = 0x01; //RTC使能
while(RTCCFG & 0x01); //等待初始化完成,需要在 "RTC使能" 之后判断.
//设置RTC时间需要32768Hz的1个周期时间,大约30.5us. 由于同步, 所以实际等待时间是0~30.5us.
//如果不等待设置完成就睡眠, 则RTC会由于设置没完成, 停止计数, 唤醒后才继续完成设置并继续计数.*/
}
_奶咖君_ 发表于 2024-6-26 15:39
应该不是片子的问题,,正确使用中断,你所说的中断我都一块用过,没有问题的。。可能是中断服务函数里干的 ...
我把这个函数注释掉之后中断能正常用,是因为这个里面有什么影响吗?
void RTC_config(void)
{
/*
INIHOUR = 23; //H:23
INIMIN = 59; //M:59
INISEC = 50; //S:50
INISSEC = 0; //S/128:0
ALAHOUR = 0; //闹钟小时
ALAMIN= 0; //闹钟分钟
ALASEC= 0; //闹钟秒
ALASSEC = 0; //闹钟1/128秒
//STC8H8K64U B版本芯片使用内部32K时钟,休眠无法唤醒
// IRC32KCR = 0x80; //启动内部32K晶振.
//while (!(IRC32KCR & 1));//等待时钟稳定
//RTCCFG = 0x03; //选择内部32K时钟源,触发RTC寄存器初始化
X32KCR = 0x80 + 0x40; //启动外部32K晶振, 低增益+0x00, 高增益+0x40.
while (!(X32KCR & 1));//等待时钟稳定
RTCCFG = 0x01; //选择外部32K时钟源,触发RTC寄存器初始化
RTCIF = 0x00; //清中断标志
RTCIEN = 0x88; //中断使能, 0x80:闹钟中断, 0x40:日中断, 0x20:小时中断, 0x10:分钟中断, 0x08:秒中断, 0x04:1/2秒中断, 0x02:1/8秒中断, 0x01:1/32秒中断
RTCCR = 0x01; //RTC使能
while(RTCCFG & 0x01); //等待初始化完成,需要在 "RTC使能" 之后判断.
//设置RTC时间需要32768Hz的1个周期时间,大约30.5us. 由于同步, 所以实际等待时间是0~30.5us.
//如果不等待设置完成就睡眠, 则RTC会由于设置没完成, 停止计数, 唤醒后才继续完成设置并继续计数.*/
} RTC中断服务函数呢?
如果这个是测试程序 就把整个工程发上来,,竹筒倒豆子看着太累了。。
如果是你产品的代码,就把代码精简到出现你上述状况的最简能编译通过的代码。 _奶咖君_ 发表于 2024-6-26 15:50
RTC中断服务函数呢?
如果这个是测试程序 就把整个工程发上来,,竹筒倒豆子看着太累了。。
我也是这个问题,初始化中有RTC_config(),然后其他中断不能使用,串口中断也进入不了。 _奶咖君_ 发表于 2024-6-26 15:50
RTC中断服务函数呢?
如果这个是测试程序 就把整个工程发上来,,竹筒倒豆子看着太累了。。
为了方便,我直接将RTC_config()和void RTC_Isr() interrupt 13放到了main函数中
dzh 发表于 2024-6-28 16:38
为了方便,我直接将RTC_config()和void RTC_Isr() interrupt 13放到了main函数中
你这个用了中断13 但是没有加irq.asm 文件,,你光是在中断13上写了代码
但是没有程序支持从RTC中断跳转到13号中断的,,相当于没有写中断服务函数
dzh 发表于 2024-6-28 16:36
我也是这个问题,初始化中有RTC_config(),然后其他中断不能使用,串口中断也进入不了。 ...
关注一下如何借用13号中断进行中转
手册的附录里面有介绍,,论坛里搜一搜也能知道,
页:
[1]
2