systick无法进入中断

2019-07-21 05:59发布

朋友们帮下忙,我现在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 
   }
  } 
 }
}
哎,我都搞了好几天了,一直进不了中断,真不知道是怎么回事,有知道的朋友麻烦帮解决下!先谢谢了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
wjd85
1楼-- · 2019-07-21 11:32
忘记说了,我是V3.5的库
正点原子
2楼-- · 2019-07-21 11:53
 精彩回答 2  元偷偷看……
wjd85
3楼-- · 2019-07-21 15:43
好吧,弄了这么多天,才发现原来程序是可以进入中断的,只是我原来的Delay程序使用了,systick的计数,把它关掉了,才不行的!哎,太失败了
zhuyishui
4楼-- · 2019-07-21 17:24
回复【3楼】正点原子:
---------------------------------
原子你好,为什么我按这种方法配的延时函数,比如延迟1000ms却只有几百ms呢,延迟几ms的时候,大约还是差不多的,拜谢原子
正点原子
5楼-- · 2019-07-21 18:13
回复【5楼】zhuyishui:
---------------------------------
我的方法很准确.
请直接用我们例程测试,然后上示波器图片说明.谢谢.
lizi
6楼-- · 2019-07-21 20:09
wjd85 发表于 2013-2-2 10:07
忘记说了,我是V3.5的库

你好,我也进不去中断,你当时是怎么解决的

一周热门 更多>