STM32/STM8技术论坛
直播中

笑尽往事

9年用户 950经验值
擅长:可编程逻辑 电源/新能源
私信 关注
[问答]

关于STM8S标准库外部中断方式连接EC11的问题求解

新手,想用STM8S103F3P6连接EC11,记录左右旋转计数。编码器A、B脚分别连接PC3、PC4脚。
代码如下,网上STM8连接EC11资料没有,新手想学**难了。
请大师帮我看看下面几个问题:
1、假如PC3、PC4脚电路中拉高,那么GPIO初始化参数应该是GPIO_MODE_IN_FL_IT 还是 GPIO_MODE_IN_PU_IT ?
2、int8_t 类型,如果计数超过128了,会发生什么?
3、代码帮我看看,有啥问题没有,多谢多谢!




回帖(1)

李超然

2024-3-8 11:24:53
其实,EC11是个比较常用的一个编码器。


首先,不建议你使用STM8系列芯片做新产品开发了,可以考虑STM32c0、STM32F0这些系列,他们性价比更好。


其次,你现在基于外部中断方式针对编码脉冲进行计数、方向识别,也可以的,尤其系统功能不复杂时。


第三,针对你当前GPIO参数配置,两个都应该可以,最终还得结合你外部中断沿的选择综合考虑;如果要针对上下
沿进行捕获,选择_in_float_it. 如果只针对下沿捕获外部中断,选_pu_it更合适点,对消除抖动和干扰更有利。结合你
当前应用,到底针对什么沿产生外部中断一定要确认下来。从你ISR代码来看,上下沿触发外部中断都用到了。


第四,int8_t超过128时 会发生什么,变成负数了。如果不需要使用负数就定义成无符号数即可,即uint8_t。


第五,你贴出来的代码没看出有啥明显问题,程序逻辑靠你自己把握。


第六,ST MCU的高级或通用TIMER多支持编码器功能。比方你目前关注的STM8芯片的TIMER1是支持编码器接口的,不过


要使用它的话,你要稍微研究下这块内容。资料当然是STMCU的相应技术手册。 
举报

更多回帖

发帖
×
20
完善资料,
赚取积分