程序求助按键等待程序时为什么没有经过TIM1延时就直接中断

2019-07-14 23:16发布


  1. #include"stm8s003k3.h"
  2. _Bool HOOKSW @PD_ODR:0
  3. _Bool BUTTON @PD_IDR:3
  4. _Bool BUTTON1 @PD_IDR:4
  5. _Bool JIANSHI @PD_ODR:5
  6. unsigned char temp;

  7. void GPIO_Init(void)//GPIO初始化
  8. {
  9.         PD_DDR = 0XE7;//1110 0111
  10.         PD_CR1 = 0XFF;//1111 1111
  11.         PD_CR2 = 0X00;//0000 0000

  12. }
  13. void CLK_Init(void)
  14. {
  15.         CLK_CKDIVR = 0X18
  16. }
  17. void tiM1_Init(void)
  18. {
  19.         TIM1_CR1 = 0X08;
  20.         TIM1_CR2 = 0X00;
  21.         TIM1_IER = 0X01;
  22.         TIM1_PSCRH = 0X4E
  23.         TIM1_PSCRL = 0X20;
  24.         TIM1_ARRH = 0X2E
  25.         TIM1_ARRL = 0XE0;
  26. }
  27. void Delay_100ms(unsigned char k
  28. {
  29.         unsigned int i,j;
  30.         for(i=0;i<k;i++)
  31.         for(j=0;j<14160;j++);
  32. }
  33. main()      
  34. {
  35.         _asm("sim");
  36.         GPIO_Init();
  37.         CLK_Init();   
  38.         TIM1_Init();
  39.         _asm("rim")
  40.   while(1)
  41.         {
  42.                                 temp=1
  43.             while((BUTTON&&BUTTON1)!=0)
  44.             if(BUTTON==0
  45.      {
  46.                   HOOKSW=1;  
  47.                         JIANSHI = 1;
  48.                         Delay_100ms(10)
  49.                   TIM1_CR1|=0X01
  50.                         while((BUTTON&&temp)!=0)
  51.                         HOOKSW=0;
  52.                         JIANSHI = 0;
  53.                         Delay_100ms(10)
  54.                         }
  55.                         else
  56.                         if(BUTTON1==0
  57.                         {
  58.                                 JIANSHI = 1;
  59.                                 HOOKSW=1;
  60.                                 Delay_100ms(10)
  61.                                 while(BUTTON1!=0)
  62.                                 JIANSHI = 0;
  63.                                 HOOKSW=0;
  64.                                 Delay_100ms(10)
  65.                                 }
  66.         }

  67. }
  68. <a href="home.php?mod=space&uid=625061" target="_blank">@far</a> <a href="home.php?mod=space&uid=948404" target="_blank">@Interrupt</a> void TIM1_Over_Interrupt(void)
  69. {
  70.         TIM1_SR1&=0XFE;//TIM1 更新中断标记 软件清零
  71.         temp=0;        //全局变量清零
  72. }
复制代码
MCU上电之后,第一次执行程序,当执行到while((BUTTON&&temp)!=0)按键等待程序时为什么没有经过TIM1延时就直接进入中断改变temp的值了  哪位大神  帮忙看下  谢谢 !!!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
芦苇鱼
1楼-- · 2019-07-15 05:14
 精彩回答 2  元偷偷看……
芦苇鱼
2楼-- · 2019-07-15 06:18
cp1149637566 发表于 2014-9-21 20:16
解决了么,能说说吗

解决了   计数器初始化和开启时会产生更新事件  屏蔽 或者产生更新事件强制更新就好了

一周热门 更多>