之前写过一篇关于STM8S芯片GPIO脚复用AD功能后无法回到GPIO状态的小文,介绍STM8S芯片的ADC应用时相关施密特触发器未适时开关而导致的问题。 大致内容就是某一GPIO口被复用为AD输入脚做相关AD检测。之后,把该脚AD功能禁用掉,再配置切换为带下降沿触发的外部中断触发脚,让其作为芯片休眠唤醒脚。
奇怪的是,那样设置后根本没法唤醒。即使不做休眠,做好切换配置后,直接查看该脚的IDR位的电平,不管外部输入如何,发现对应IDR位始终提示为0.
后来找到原因是跟那个施密特触发器的配置有关。可能有人觉得该问题是钻牛角尖,其实,也不尽然。毕竟应用需求是五花八门的,遇到的问题往往也是五彩缤纷,问题不论大小折磨起人来也是不分**老少的。
这里再次分享个类似话题 ,希望能让见到本文的人有所启示。工程师反馈基本情况如下: 使用STM8S芯片开发。因为TIM1/2都用做PWM了,所以用TIM4来做基本定时。TIM4正常中断,UART1串口发送正常,就是串口接收中断进不去。但只要把 TIM4_initialzation();屏蔽掉,串口马上正常中断接收,一旦打开TIM4,串口就接收不了,其它功能都正常。
上面是该工程师对症状的基本描述和初步判断。【当然,调试遇到麻烦时候的判断难免有偏差,偏差大小因人因景不同,有时甚至完全误判。】
下面是他的主循环代码【为了排版和阅读,做了些删减】。
|