初中生
最后登录1970-1-1
在线时间 小时
注册时间2021-9-27
|
按着火哥视频教程写的代码,编译0警告0错误,烧进指南者开发板按键无法触发LED的亮灭,不知道什么原因,求各位大佬解答
还有光盘里面的18号EXTI的例程烧近开发板也没办法通过开关触发中断控制LED。
#ifndef _EXTI_H
#define _EXTI_H
#include "stm32f10x.h"
#define KEY1_INT_GPIO_PIN GPIO_Pin_0
#define KEY1_INT_GPIO_PORT GPIOA
#define KEY1_INT_GPIO_CLK RCC_APB2Periph_GPIOA
#define LED_G_GPIO_PIN GPIO_Pin_0
#define LED_G_GPIO_PORT GPIOB
#define LED_G_GPIO_CLK RCC_APB2Periph_GPIOB
#define ON 0
#define OFF 1
#define LED_G(a) if(a)\
{GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);}\
else \
{GPIO_SetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);}
#define LED_G_TOGGLE {LED_G_GPIO_PORT->ODR ^= GPIO_Pin_0;}
void LED_GPIO_Config(void);
void EXTI_Key_Config(void);
#endif
#include "exti.h"
void LED_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(LED_G_GPIO_CLK, ENABLE);
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Pin = LED_G_GPIO_PIN;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(LED_G_GPIO_PORT, &GPIO_InitStruct);
}
static void EXTI_NVIC_Config(void)//仅该文件可调用
{
NVIC_InitTypeDef NVIC_InitStruct;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStruct);
}
void EXTI_Key_Config(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
EXTI_InitTypeDef EXTI_InitStruct;
//配置中断优先级
EXTI_NVIC_Config();
//配置GPIO
RCC_APB2PeriphClockCmd(KEY1_INT_GPIO_CLK, ENABLE);
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStruct.GPIO_Pin = KEY1_INT_GPIO_PIN;
GPIO_Init(KEY1_INT_GPIO_PORT, &GPIO_InitStruct);
//配置EXTI
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
EXTI_InitStruct.EXTI_Line = EXTI_Line0;
EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStruct.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStruct);
}
void KEY1_IRQHandler(void)
{
if(EXTI_GetFlagStatus(EXTI_Line0) != RESET)
{
LED_G_TOGGLE;
}
EXTI_ClearITPendingBit(EXTI_Line0);
EXTI_ClearFlag(EXTI_Line0);
}
按着火哥视频教程写的代码,编译0警告0错误,烧进指南者开发板按键无法触发LED的亮灭,不知道什么原因,求各位大佬解答
还有光盘里面的18号EXTI的例程烧近开发板也没办法通过开关触发中断控制LED。
|
|