本帖最后由 zerozk 于 2015-3-26 16:33 编辑 最近公司一个案子需要用到超低功耗MCU,在TI和ST的片子中纠结了一段时间,最后选了ST的STM8L151G2U6。 在使用外部中断的时候迷糊了,发现这个的外部中断跟普通MCU的外部中断不一致,经过半日分析整理得出一下结论,不知正确与否,望与大神们讨论。 一般MCU的外部中断可以定义到某个Port上某一固定的IO上,而STM8L的外部中断与此不同,共有有两种设定方式: 方式一:设定IO口 即将具有外部中断功能的Port的某一IO设定为外部中断的触发输入,如下图: 该设置涉及到EXTI_CR1和EXTI_CR2,然后再中断函数中再去确定是哪个Port的IO发生了中断事件。 方式二:设定Port 即将Port作为外部中断的触发输入,然后再中断函数中确定是哪个IO发生了中断事件,这个带spec里面我没找到详细说明,是通过register设定得出这个结论的,涉及到EXTI_CR3,EXTI_CR4以及EXTI_CONF1,EXTI_CONF2四个register,其中CR3和CR4用于设定Port的sensitivity,CONF1和CONF2用于设定是整个Port用于中断功能还是半个Port(0-3或者4-7号IO)用于中断功能。 以上是个人对于STM8L外部中断的理解,由于打样的PCB板还未回来,所以无法验证,如有错误还望大神们提出。 thanks! |
|
|
不同于其它8位单片机,所有IO口都可以用来设置为中断见RM0016 STM8S参考手册84页 |
RM0031 STM8L参考手册116页,英文不好的话参考RM0016 STM8S参考手册84页。 |
楼主的总解是对的 |
STM8AF系列可以通过Flash Loader Demonstrator用lin总线刷写程序吗
STM8S003F3U6 请求各位大佬支援,但是遇到如下问题。。。这样就一定是这颗芯片的问题吗?
STVD如何生成库文件
STM8 flash 库函数 startaddress = startaddress + ((uint32_t)BlockNum * FLASH_BLOCK_S
stm 8 flash 在RAM运行代码的问题,是不是库函数有问题 Library call (?sll32_l0_l0_a) from within a
STM 有能替代MCHC912B32CFUE8 / NXP的型号吗?
STM8S的CAN总线使用
STM8L151在使用DAC功能后严重发热
STM8 IIC SLAVE 400K
STM8S 定时器1互补输出pwm