stm32触摸按键无法进入中断(stm32触摸按键)
STM32中断控制程序已配置,但无法进入中断。我不知道这是怎么回事?请帮我解决部分程序!
你的初始化顺序是什么?查看是否还有初始化函数没有被调用,就是上面的函数。 其他问题
这是初始化顺序。我已经研究了很长时间,但我仍然不知道为什么。硬件连接没有问题。请帮我!
STM32 DMA 无法进入中断
如果就是进不去中断,检查NVIC的中断映射是否配置。我使用DMA发送,供大家参考。
相关定义:
#define USART1_Tx_DMA_Channel DMA1_Channel4代码:
#ifdef USART1_USE_DMA_MODE我有你的所有设置,但找不到原来的问题。但我无法发布代码。请问你的代码是怎么贴出来的?
跟进发代码很简单。下图中,
如果看到没有红圈的地方,下拉展开,选择C/C++。
最近自学STM32,写了一个按键中断程序,但是中断总是没有响应...希望大家能给我一些建议,谢谢...程序如下
尝试过这个应用程序。 。中断是可能的。 。
如果无法进入并中断,可能是硬件连接问题。 。把PE3的GPIO_Mode改成IPU或者IPD再试试进一步问题
好的,谢谢,我再试试
刚刚试了一下还是不行...但是如果中断的话服务函数EXTI3_IRQHandler();将其视为一般子函数,然后在主函数main前添加函数声明void EXTI3_IRQHandler(void);最后将中断服务函数写入main函数中的while(1) {EXTI3_IRQHandler(); }
这样确实可以达到效果,但是已经失去了中断的意义...
可以实现中断吗?也许真的是我的硬件连接有问题?
EXTI3_IRQHandler();无需单独声明。中断向量表已经包含在芯片对应的startup.s文件中。当中端生成后,可以直接进入中断处理程序。另外,EXTI3_IRQHandler()一般声明在stm32f10x_it.h中,具体内容写在stm32f10x_it.c中。另外,可以在void EXTI3_IRQ中声明在Handler(void)后面添加断点进行调试。上面的程序中,我注释掉了几个delay的调用,然后就可以中断模拟了...
还有问题吗哦,好吧,我也试试这个
STM32无法进入中断
/*我不知道你之前的程序,所以我无法判断你哪里出了问题。试试我调试成功的,看看有没有错误。正常情况下,PB5678周期性点亮。 EXTI0_IRQHandler()中断发生后,PB56循环点亮。 EXTI1_IRQHandler()发生后,PB78循环点亮。 EXTI0 的优先级高于 EXTI1*/#include "stm32f10x.h"
extern void Delay(vu32 nCount ; int main(void)
{
//SystemInit();
RCC_Config( );
GPIO_Config();
EXTI_Config();
NVIC_Config();
while (1)
{
GPIO_SetBits(GPIOB, GPIO_Pin_5);//GPIOB.5= 1
Delay(0xfffff);
GPIO_SetBits(GPIOB, GPIO_Pin_6);//GPIOB.6=1
Delay(0xfffff);
GPIO_SetBits(GPIOB, GPIO_Pin_7);//GPIOB.7= 1
Delay(0xfffff);
GPIO_ResetBits(GPIOB, GPIO_Pin_5);//GPIOB.5=0
Delay(0xfffff);
GPIO_ResetBits(GPIOB, GPIO_Pin_7);//GPIOB.7=0
Delay(0xfffff);
GPIO_ResetBits(GPIOB, GPIO_Pin_8);//GPIOB.8=0
延迟(0xfffff);
}
}
void RCC_Config(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE );
/*开时钟*/
}
void GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8;/*LED为B 5678*/
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0|GPIO_Pin_1;//KEY为A 01
GPIO_In itStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void EXTI_Config(void)
{
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); //将A0接EXTI0
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line = EXTI_Line0;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource1);//将A1接EXTI1
EXTI_InitStructure.EXTI_Line = EXTI_Line1;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXT I_Trigger = EXTI_Trigger_Falling;// EXTI_InitStructure.EXTI_LineC md = ENABLE ;// 电影使能
EXTI_Init(&EXTI_InitStructure);
}
void NVIC_Config(void)//电影安时最好级别
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig (NVIC_PriorityGroup_1) ; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
/* 启用 EXTI1 中断 */
NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;//1
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC _InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure .NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
extern void Delay(vu32 nCount) //简单长延时函数
{
int i; //声明内部减变量
for(; nCount!= 0; nCount--) //减变量计数
{
for (i=0; i<0xffff; i++);
}
}
/*以下是中断函数,添加到stm32f10x_it.c文件中*/
#include "stm32f10x_it.h"
void EXTI0_IRQHandler(void)
{
int i;
if(EXTI_GetITStatus(EXTI_Line0) != RESET)
{
/*清除按键EXTI线路挂起位*/
EXTI_ClearITPendingBit(EXTI_Line0);//清除中断标志位
for(i= 0;i<2;i++)
{
GPIO_SetBits(GPIOB, GPIO_Pin_5);//GPIOB.5=1
延迟(0xfffff);
GPIO_SetBits(GPIOB) , GPIO_Pin_6);//GPIOB .6=1
延迟(0xfffff);
GPIO_ResetBits(GPIOB, GPIO_Pin_5);//GPIOB.5=0
延迟(0xfffff);
GPIO_RESETBITS(GPIOB,GPIO_PIN_6); // GPIOB.6 = 0
延迟 (0xfffff); i;
if(EXTI_GetITStatus(EXTI_Line1) != RESET)
{
/*清除按键EXTI线路挂起位*/
EXTI_ClearITPendingBit(EXTI_Line1);//清除中断标志位
for(i=0;i<2;i++)
{
GPIO_SetBits(GPIOB, GPIO_Pin_7);//GPIOB.7=1
Delay(0xfffff);
GPIO_SetBits(GPIOB, GPIO_Pin_8 );//GPIOC.8=1
延迟(0xfffff);
GPIO_ResetBits(GPIOB, GPIO_Pin_7);//GPIOB.7=0
延迟(0xfffff);
GPIO_ResetBits(GPIOB, GPIO_Pin_8 );//GPIOB.8=0
延迟(0xfffff);
}
}
}
以上是小编对stm32触摸按键无法进入中断(stm32触摸按键)及相关问题的解答。 stm32触摸按键无法进入中断(stm32触摸按键)问题。我希望它对你有用!