STM8S001最小系统电路图

网上的demo是使用IO7做按键外部中断,我测试没问题以下是主要代码
main里面:
EXTI_Init();
/* 使能总中断 */
enableInterrupts();
子函数
void EXTI_Init(void)
{
/* 初始化外部中断IO口 ,上拉输入并使能中断*/
GPIO_Init(EXTI_GPIO_PORT, EXTI_GPIO_PINS, GPIO_MODE_IN_PU_IT);
/* 设置外部中断端口C模式为下降沿触发 */
EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_ONLY);
}
stm8s_it.c(注意不同IO口对应不同中断函数)
INTERRUPT_HANDLER(EXTI_PORTC_IRQHandler, 5)
{
/* In order to detect unexpected events during development,
it is recommended to set a breakpoint on the following instruction.
*/
Delay(0x8fff);
if ((GPIO_ReadInputData(EXTI_GPIO_PORT) & EXTI_GPIO_PINS) == 0x00)
{
GPIO_WriteReverse(LED1_GPIO_PORT, LED1_GPIO_PINS);
}
}
上一章讲过,我要用的是TIM2的三个通道产生PWM,所以按键只能更换IO口,
我替换成 IO6,具体方法:
1.在宏修改IO口,
2.配置至外部中断模式 改为 EXTI_PORT_GPIOB
3.在GPIOB中断里添加按键检测
一直进入外不中断
修改完之后测试 ,debug发现一直进入中断,查询网络上的方法,
1.在中断中添加关闭总中断
逻辑是 进中断 - 消抖 - 检测 - 关闭总中断 - 处理数据
2. 在初始化中断之前,关闭总中断,初始化完成,在开启总中断。
以上我都试了但是没有解决问题,我的现象是只要用杜邦线连接io口另一端悬空就会不断进,用万用表测量时,搭上去也会进入中断,电压2.2V左右。
百思不解下,我配置的是上拉,外面又加了一个上拉然后问题就解决了。
原因:IO6 是IIC引脚,没有上拉功能。
本文介绍了在STM8S001微控制器上遇到的外部中断一直触发的问题。作者首先展示了STM8S001最小系统电路图,并分享了尝试使用IO6作为外部中断输入时,发现系统不断进入中断的困境。尝试了修改中断宏、配置EXTI_PORT_GPIOB、在中断中关闭总中断等方法均未成功。最后发现IO6是IIC引脚,无内置上拉电阻,通过外加一个上拉电阻解决了问题。

367

被折叠的 条评论
为什么被折叠?



