微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 程序求助按键等待程序时为什么没有经过TIM1延时就直接中断

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

时间:10-02 整理:3721RD 点击:

  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的值了  哪位大神  帮忙看下  谢谢 !

初始化的时候,添加这么几条试试   TIM1_SR1=0X00;  TIM1_EGR|=0X01;

解决了么,能说说吗

添加了  没有作用   谢谢

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top