[STM8] stm8一个中断中改变另一个中断触发条件

[复制链接]
1584|1
 楼主| xingzhibo 发表于 2016-4-29 18:14 | 显示全部楼层 |阅读模式
现在使用了来个gpio口中断来通信,类似于i2c。
黄色-表示CLK
蓝色-表示DAT

在一开始设置黄色下降沿中断,触发表示开始
中间传输数据,16位,以CLK上升沿来处理。在接收了16位数据后,将DAT由下降沿触发改为上升沿,理想情况是如果再次触发表示结束

可现在结果是我更改了DAT触发条件,没有再进入到中断中,我都在接收完16位数据后,又重新初始化了一般,按照期初函数中断可以进入的设置方式

  1. 参考代码如下 iCount = 16表示已近接收了16位数据
  2.   if(iCount == 16){
  3.           Send('E');
  4.         /*
  5.         sim();
  6.         //上升沿触发 SDA
  7.     EXTI->CR1 &=~0x03; //PORT A
  8.     EXTI->CR1 |= 0x01;

  9.         ITC_SetSoftwarePriority(ITC_IRQ_PORTA,ITC_PRIORITYLEVEL_1); //SDA
  10.         rim();
  11.         */

  12.         sim();
  13.           GPIO_Init(PROTOCOL_SCL_PORT, PROTOCOL_SCL_PIN, GPIO_MODE_IN_FL_IT);
  14.           GPIO_Init(PROTOCOL_SDA_PORT, PROTOCOL_SDA_PIN, GPIO_MODE_IN_FL_IT);
  15.         EXTI_DeInit();

  16.         //下降沿触发 SDA
  17.     EXTI->CR1 &=~0x03; //PORT A
  18.     EXTI->CR1 |= 0x01;
  19.        
  20.         //上升沿触发 CLK
  21.         EXTI->CR1 &=~0xc0;//PORT D
  22.     EXTI->CR1 |=0x40;

  23.        
  24.         ITC_SetSoftwarePriority(ITC_IRQ_PORTA,ITC_PRIORITYLEVEL_2); //SDA
  25.         ITC_SetSoftwarePriority(ITC_IRQ_PORTD,ITC_PRIORITYLEVEL_1); //SCL

我有打印信息,按道理如果改为上升沿了中断还可以进入的话,会打印6个‘S’字符,现在只能打印5个,最后更改了条件还是没有进入。有类似经历的麻烦指导一下。谢谢了


通信.jpg
 楼主| xingzhibo 发表于 2016-4-29 18:24 | 显示全部楼层
自己顶一下,看到了过来讲讲经验,第一次用stm8
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部