历史上的今天
今天是:2024年12月23日(星期一)
2019年12月23日 | STM8L固件库外部中断的使用及注意事项
2019-12-23 来源:eefocus
1.初始化函数
GPIO_Init(GPIOB, GPIO_Pin_3, GPIO_Mode_In_FL_IT);
EXTI_SetPinSensitivity(GPIO_Pin_3, EXTI_Trigger_Falling);//有误,下文会说明
2.中断函数
INTERRUPT_HANDLER(EXTI3_IRQHandler,11)
{
EXTI_ClearITPendingBit(EXTI_IT_Pin3);
//
}
3.问题及说明
关于函数的具体使用我就不多说了,在固件库和手册里都可以找到。在测试的时候发现信号输入为下降沿并保持低电平时会反复触发,很像是被配置成了下降沿和低电平触发模式。我调试了很久都没找到问题,最后再看了一遍库函数,正确的配置是
EXTI_SetPinSensitivity(EXTI_Pin_3, EXTI_Trigger_Falling);
一开始我也注意到了应该用EXTI_Pin_3而不是GPIO_Pin_3,但是根据我编写AVR的经验,我认为这两个宏都定义为3,如果不是3也应该相同,所以没有多想。
打开对应头文件,看看这两个宏定义
GPIO_Pin_0 = ((uint8_t)0x01), /*!< Pin 0 selected */
GPIO_Pin_1 = ((uint8_t)0x02), /*!< Pin 1 selected */
GPIO_Pin_2 = ((uint8_t)0x04), /*!< Pin 2 selected */
GPIO_Pin_3 = ((uint8_t)0x08), /*!< Pin 3 selected */
GPIO_Pin_4 = ((uint8_t)0x10), /*!< Pin 4 selected */
GPIO_Pin_5 = ((uint8_t)0x20), /*!< Pin 5 selected */
GPIO_Pin_6 = ((uint8_t)0x40), /*!< Pin 6 selected */
GPIO_Pin_7 = ((uint8_t)0x80), /*!< Pin 7 selected */
EXTI_Pin_0 = (uint8_t)0x00, /*!< GPIO Pin 0 */
EXTI_Pin_1 = (uint8_t)0x02, /*!< GPIO Pin 1 */
EXTI_Pin_2 = (uint8_t)0x04, /*!< GPIO Pin 2 */
EXTI_Pin_3 = (uint8_t)0x06, /*!< GPIO Pin 3 */
EXTI_Pin_4 = (uint8_t)0x10, /*!< GPIO Pin 4 */
EXTI_Pin_5 = (uint8_t)0x12, /*!< GPIO Pin 5 */
EXTI_Pin_6 = (uint8_t)0x14, /*!< GPIO Pin 6 */
EXTI_Pin_7 = (uint8_t)0x16 /*!< GPIO Pin 7 */
可以看到并不相同。
再查看手册,中断默认配置为下降沿和低电平触发模式。
小结:
使用库函数固然很方便快捷,但是有时候不能过于图方便,遇到问题要仔细看库函数和手册。
上一篇:STM8L052R8大小端测试
下一篇:STM8 低功耗设计
史海拾趣
|
在近日举行的2010全球IPv6下一代互联网高峰会议上,物联网再度成为热点。不过这次专家讨论的焦点不是物联网的美好未来,而是物联网必须面对的一个紧迫问题:IPv4地址资源即将耗尽,我国必须尽快发展IPv6来满足物联网对IP地址资源的大量需求。 ...… 查看全部问答> |
|
wince6.0 下如何编写能使直接访问硬件的软件? 以前在wince5.0 下使用MmMapIoSpace就可以很容易做到了。 但是wince6.0 下的应用程序和驱动已经不在同一个空间了。 如何做到? 有时候写一个应用程序去直接操纵硬件对调试驱动非常有帮助, 在win ...… 查看全部问答> |
|
在创建wince平台时,编译时,出现SMDK2410 - 1 error(s), 0 warning(s),在build.log出现:\'findstr\' 不是内部或外部命令,也不是可运行的程序 或批处理文件。… 查看全部问答> |
|
我公司现在急招一名电子工程师(电子信息,广播电视电影),电动控制中高级职称。 费用可谈,联系人:刘工,电话:15110022612,QQ:1480984099… 查看全部问答> |
|
请问at056tn52 v.3中的POL和VCOM信号该是什么样的接法? Vcom信号分AC和DC吗,我看手册上标的都是VCOM,并没有AC DC之分。POL部分产生VCOM信号我是按照手册上的电路图来的,只不过运放是UTC3414。VCOM基本在DC1V上下。我用的是凌阳的GPL32来驱动的,HV模式,DE悬空。用示波器量了DCLK在24M,Hsync信号为30K ...… 查看全部问答> |




