朋友们帮下忙,我现在systick一直进不了中断,使用原子哥的直接操作寄存器,不用中断倒是可以正常计数,但是使用库函数一直进不了中断,
__IO unsigned char hours=0,minutes=0,seconds=0; //时,分,秒
__IO unsigned char se_count=0; //秒钟计数
int main(void)
{
RCC_Configuration(); //时钟初始化函数
GPIO_Configuration(); //端口初始化函数
if(SysTick_Config(SystemCoreClock/10)) //100ms进入一次
{
/* Capture error */
while (1);
}
NVIC_SetPriority(SysTick_IRQn, 0x0);
OLED_Init(); //OLED初始化
Boot_Interface(); //开机界面,商标图案
while(1)
{
OLED_ASCII8x16(32,4,hours/10+0x30);
OLED_ASCII8x16(40,4,hours%10+0x30);
OLED_ASCII8x16(48,4,':');
OLED_ASCII8x16(56,4,minutes/10+0x30);
OLED_ASCII8x16(64,4,minutes%10+0x30);
OLED_ASCII8x16(72,4,':');
OLED_ASCII8x16(80,4,seconds/10+0x30);
OLED_ASCII8x16(88,4,seconds%10+0x30);
}
}
extern __IO unsigned char hours,minutes,seconds; //时,分,秒
extern __IO unsigned char se_count; //秒钟计数
void SysTick_Handler(void) //100ms进入一次
{
seconds++; //加秒钟
se_count++; //秒钟计数自增
if(se_count>=10) //1秒钟进入一次
{
se_count=0; //重新定时1秒钟
seconds++; //加秒钟
if(seconds>=60) //判断60S时间到了没
{
seconds=0; //秒钟等于0
minutes++; //分钟自加1
if(minutes>=60) //判断是否大于60分钟
{
minutes=0; //分钟等于0
hours++; //小时自加
if(hours>=24) hours=0; //时间等于0
}
}
}
}
哎,我都搞了好几天了,一直进不了中断,真不知道是怎么回事,有知道的朋友麻烦帮解决下!先谢谢了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>