请帮忙看一下STM32L053R8中断用不了,但是不知道程序错在哪里。

2019-03-23 18:27发布

我用的是STM32L053R8 Nucleo开发板
然后外接的其他学习板上的一个LED和一个按键。
LED接PB4,GPIO口低电平时LED点亮。
按键与PB3和3.3V电源相接,另一端接地。
程序是根据在官网上下的例程抄的,但是中断还是没反应。
请各位帮忙看看错在哪里,谢谢!
  1. #include "stm32l0xx_hal.h"

  2. /* 配置系统时钟 */
  3. static void SyatemClook_Config(void);
  4. /* 配置PB3口中断 */
  5. static void EXTI_PB3_Config(void);
  6. /* 配置PB2口中断 */
  7. static void GPIO_LED(void);

  8. int main (void)
  9. {
  10.         HAL_Init();
  11.         SyatemClook_Config();
  12.         EXTI_PB3_Config();
  13.         GPIO_LED();
  14. while (1)
  15. {}
  16. }

  17.         /* 设置时钟为MSI */
  18. static void SyatemClook_Config(void)
  19. {
  20.         RCC_ClkInitTypeDef RCC_ClkInit;
  21.         RCC_OscInitTypeDef RCC_OscInit;
  22.        
  23.         __PWR_CLK_ENABLE();
  24.        
  25.         __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
  26.        
  27.         RCC_OscInit.OscillatorType = RCC_OSCILLATORTYPE_MSI;
  28.         RCC_OscInit.MSIState = RCC_MSI_ON;
  29.         RCC_OscInit.MSIClockRange = RCC_MSIRANGE_5;
  30.         RCC_OscInit.MSICalibrationValue = 0x00;
  31.         RCC_OscInit.PLL.PLLState = RCC_PLL_NONE;
  32.         HAL_RCC_OscConfig(&RCC_OscInit);
  33.        
  34.         RCC_ClkInit.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
  35.         RCC_ClkInit.SYSCLKSource = RCC_SYSCLKSOURCE_MSI;
  36.   RCC_ClkInit.AHBCLKDivider = RCC_SYSCLK_DIV1;
  37.   RCC_ClkInit.APB1CLKDivider = RCC_HCLK_DIV1;  
  38.   RCC_ClkInit.APB2CLKDivider = RCC_HCLK_DIV1;  
  39.   HAL_RCC_ClockConfig(&RCC_ClkInit, FLASH_LATENCY_0);
  40.        
  41. }

  42.         /* 设置为下降沿中断 */
  43. static void EXTI_PB3_Config(void)
  44. {
  45.         GPIO_InitTypeDef GPIO_EXTI;
  46.         __GPIOB_CLK_ENABLE();
  47.         GPIO_EXTI.Pin = GPIO_PIN_3;
  48.         GPIO_EXTI.Mode = GPIO_MODE_IT_FALLING;
  49.         GPIO_EXTI.Pull = GPIO_NOPULL;
  50.         GPIO_EXTI.Speed = GPIO_SPEED_FAST;
  51.         HAL_GPIO_Init(GPIOB,&GPIO_EXTI);
  52.         HAL_NVIC_SetPriority(EXTI2_3_IRQn, 3, 0);
  53.         HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);
  54. }

  55. /* LED低电平时点亮 */
  56. static void GPIO_LED(void)
  57. {
  58.         GPIO_InitTypeDef LED;
  59.         __GPIOB_CLK_ENABLE();
  60.         LED.Pin = GPIO_PIN_4;
  61.         LED.Mode = GPIO_MODE_OUTPUT_PP;
  62.         LED.Pull = GPIO_PULLUP;
  63.         LED.Speed = GPIO_SPEED_FAST;
  64.         HAL_GPIO_Init(GPIOB,&LED);
  65.        
  66. }

  67. void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
  68. {
  69.   if(GPIO_Pin == GPIO_PIN_3)
  70.   {
  71.     HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4,1);
  72.   }
  73. }
复制代码

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
littleshrimp
1楼-- · 2019-03-24 03:45
/ stm32不太熟悉,不知道你的按键引脚设置上拉或者下拉电阻了没?
inazuma
2楼-- · 2019-03-24 06:33
littleshrimp 发表于 2015-9-25 16:41
stm32不太熟悉,不知道你的按键引脚设置上拉或者下拉电阻了没?

按键接了个上拉电阻的。
academic
3楼-- · 2019-03-24 07:14
 精彩回答 2  元偷偷看……
liutogo
4楼-- · 2019-03-24 11:09
这个只看你给的代码信息太少,看看工程文件结构,有没有添加 stm32xxx_it.c/.h 有没有上调试器调试?

一周热门 更多>