问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

STM32 进入不了中断

发布网友 发布时间:2022-08-18 20:14

我来回答

3个回答

热心网友 时间:2023-10-20 01:03

  /*我不知道你之前的程序,没法判断你错在哪。试试我调试成功的吧,你对照着看看有什么错误。正常情况PB5678循环亮,中断EXTI0_IRQHandler()发生后PB56循环亮,EXTI1_IRQHandler()发生后PB78循环亮,EXTI0的优先级高于EXTI1*/

  #include "stm32f10x.h"
  extern void Delay(vu32 nCount);
  extern void delay(uint);
  void RCC_Config(void);
  void GPIO_Config(void);
  void EXTI_Config(void);
  void NVIC_Config(void);
  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_SetBits(GPIOB, GPIO_Pin_8);//GPIOB.8=1
  Delay(0xfffff);
  GPIO_ResetBits(GPIOB, GPIO_Pin_5);//GPIOB.5=0
  Delay(0xfffff);
  GPIO_ResetBits(GPIOB, GPIO_Pin_6);//GPIOB.6=0
  Delay(0xfffff);
  GPIO_ResetBits(GPIOB, GPIO_Pin_7);//GPIOB.7=0
  Delay(0xfffff);
  GPIO_ResetBits(GPIOB, GPIO_Pin_8);//GPIOB.8=0
  Delay(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_InitStructure.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;//下降沿
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;//中断使能
  EXTI_Init(&EXTI_InitStructure);

  GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource1);//将A1接EXTI1
  EXTI_InitStructure.EXTI_Line = EXTI_Line1;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//下降沿
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;//中断使能
  EXTI_Init(&EXTI_InitStructure);
  }

  void NVIC_Config(void)//中断嵌套优先级设置
  {
  NVIC_InitTypeDef NVIC_InitStructure;

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//1组

  /* Enable the EXTI0_IRQn Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;//0
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

  /* Enable the EXTI1 Interrupt */
  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)
  {
  /* Clear the Key Button EXTI line pending bit */
  EXTI_ClearITPendingBit(EXTI_Line0);//清中断标志位
  for(i=0;i<2;i++)
  {
  GPIO_SetBits(GPIOB, GPIO_Pin_5);//GPIOB.5=1
  Delay(0xfffff);
  GPIO_SetBits(GPIOB, GPIO_Pin_6);//GPIOB.6=1
  Delay(0xfffff);
  GPIO_ResetBits(GPIOB, GPIO_Pin_5);//GPIOB.5=0
  Delay(0xfffff);
  GPIO_ResetBits(GPIOB, GPIO_Pin_6);//GPIOB.6=0
  Delay(0xfffff);
  }
  }
  }
  void EXTI1_IRQHandler(void)
  {
  int i;
  if(EXTI_GetITStatus(EXTI_Line1) != RESET)
  {
  /* Clear the Key Button EXTI line pending bit */
  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
  Delay(0xfffff);
  GPIO_ResetBits(GPIOB, GPIO_Pin_7);//GPIOB.7=0
  Delay(0xfffff);
  GPIO_ResetBits(GPIOB, GPIO_Pin_8);//GPIOB.8=0
  Delay(0xfffff);
  }
  }
  }

热心网友 时间:2023-10-20 01:03

同遇到问题,大概是这样的。
问题:串口接收中断跑飞,调试时,串口接一旦收到数据,PC指针就指向0xfffffffe。
背景:工程从别人那拿过来的,板子是VET6
解决:1、system_stm32f10x.c文件里边,128行
#define VECT_TAB_OFFSET 0x20000改成:#define VECT_TAB_OFFSET 0x0
2、魔术棒——target——IROM1由0x8020000改为0x8000000

热心网友 时间:2023-10-20 01:04

NVIC外部中断位开了吗?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 品胜的转接头和羽博的充电宝可以一起用吗? 用USB转两角插的线链接充电宝是否可以使用手机原装充电头实现快充? 我梦见我当着爸妈的面,为我心爱的人戴上戒指,他们很高兴! 梦见心爱的人朝我笑他在纸香上写着什么,看见我就很高兴的笑了一下,然后我就去试新衣服 梦见和自己心爱的人欢声笑语 梦见与心爱的人相处愉快 请问安徽省安庆市太湖县适合种些什么有名点有价值点的树木? 安徽安庆适合种什么树啊- 问一问 君子于役选自?如题 谢谢了 消毒粉20g配多少水? 龙卷风可以将地上的树连根拔起,龙吸水会把水里的鱼给卷起来吗? 发朋友圈清账适合的句子 汉语拼音1《ɑ o e》课文朗读预习.小学一年级语文上册 伙计是肥西话么? 陕西省科普宣传教育中心怎么样? 湖州特产有什么,在哪里买,要吃的,便宜的 办公室风水禁忌 有什么讲究 一年级语文下册《小松树和大松树》教案 泰拉瑞亚专家难度特有装备 什么证书最吃香? winform递归读取文件夹的excel文件 要怎么写,求大神指导 为什么拍照时手机会自己旋转? 空调使用了二十年了开机就跳闸怎回事? 红甜菜的介绍 如何卸妆才是正确的做法? 如何让邀请客户成为1688会员 请问病毒性神经炎有哪些临床症状?该怎么检查和检查些什么?多谢了 周围性神经病是应先做病因检查,还是可以直接接受治疗跳过检查呢? 没钱怎么理财投资?让钱生钱的方法 b站就是哔哩哔哩动画网吗??? 请问体质较寒的人,如何用中医调理? 魔兽世界G是什么意思 华北电力大学近两年电气专业的考研录取分数线是多少,可有大佬知道? 月球的地形地貌 急用! 淘宝联名卡如何办理 微信信用卡还款手续费怎么避免?这几种方法最省钱 annoyed怎么读 梦见抬两碗和两双筷子 二手房遭遇违约 “一房二卖”困局如何防? 买房二手房,卖房房主违约,我可以起诉他,让他继续履行合同么?胜诉的几率大么?