找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2523|回复: 2
收起左侧

关于STM32外部中断唤醒

[复制链接]
ID:410988 发表于 2019-12-10 19:08 | 显示全部楼层 |阅读模式
300黑币
STM32
我想做一个密码锁,13个按键,每个按键都能单独唤醒STM32的停机或者待机。
有什么好的方法吗?
我一开始想的是每个都接外部中断,但是我看介绍说:外部中断“中断线5-9共用中断函数,中断线10-15共用中断函数”,这样的话我还能输入不同的值嘛?
还有就是有没有办法 当每个按键按下时 通过一个 或器件 唤醒一个公共的引脚?

本人刚接触32 ,望不吝赐教。

最佳答案

查看完整内容

STM32每个引脚都是中断源,配置一下即可, 中断线5-9共用中断函数,中断线10-15共用中断函数”,只是在一个中断函数中,但是哪个引脚触发的需要判断。判断到该引脚按下赋值就可以了。 下面是一段中断函数为你参考: void EXTI9_5_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Line8)!=RESET) { delay_nms1(10); if(!(GPIOB->IDR & GPIO_Pin_8)) { if(secflag) secflag=0; else secflag=1; } E ...
回复

使用道具 举报

ID:25310 发表于 2019-12-10 19:08 | 显示全部楼层
STM32每个引脚都是中断源,配置一下即可,
中断线5-9共用中断函数,中断线10-15共用中断函数”,只是在一个中断函数中,但是哪个引脚触发的需要判断。判断到该引脚按下赋值就可以了。
下面是一段中断函数为你参考:
void EXTI9_5_IRQHandler(void)
         
{
        if(EXTI_GetITStatus(EXTI_Line8)!=RESET)
        {
                delay_nms1(10);
                if(!(GPIOB->IDR & GPIO_Pin_8))
                {
                        if(secflag) secflag=0;
                        else secflag=1;
                }
                EXTI_ClearITPendingBit(EXTI_Line8);
        }
       
        if(EXTI_GetITStatus(EXTI_Line9)!=RESET)
        {
                delay_nms1(10);
                if(!(GPIOB->IDR & GPIO_Pin_9))
                {
                        if(secflag) secflag=0;
                        else secflag=1;
                }
                EXTI_ClearITPendingBit(EXTI_Line9);
        }
       
       
       
}
回复

使用道具 举报

ID:410988 发表于 2019-12-11 13:11 | 显示全部楼层
pcbboy 发表于 2019-12-11 08:12
STM32每个引脚都是中断源,配置一下即可,
中断线5-9共用中断函数,中断线10-15共用中断函数”,只是在一 ...

多谢!!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表