根据你的需求,我帮你修改了代码实现按键控制灯的闪烁。请注意,以下代码是基于某个具体硬件平台的示例,如果你在不同的平台上使用,请相应地修改引脚定义和函数调用。
”`c #include “stm32f10x.h”
#define LED_R_PIN GPIO_Pin_12 #define LED_G_PIN GPIO_Pin_13 #define LED_B_PIN GPIO_Pin_14
void Delay(uint32_t count) { for (uint32_t i = 0; i < count; ++i) {
for (uint32_t j = 0; j < 720000; ++j);
} }
void LED_R_ON() { GPIO_SetBits(GPIOC, LED_R_PIN); }
void LED_R_OFF() { GPIO_ResetBits(GPIOC, LED_R_PIN); }
void LED_G_ON() { GPIO_SetBits(GPIOC, LED_G_PIN); }
void LED_G_OFF() { GPIO_ResetBits(GPIOC, LED_G_PIN); }
void LED_B_ON() { GPIO_SetBits(GPIOC, LED_B_PIN); }
void LED_B_OFF() { GPIO_ResetBits(GPIOC, LED_B_PIN); }
int main(void) {
// 初始化GPIO和外部中断
// 设置LED引脚为输出模式 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitTypeDef gpioInitStruct;
gpioInitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
gpioInitStruct.GPIO_Speed = GPIO_Speed_50MHz;
gpioInitStruct.GPIO_Pin = LED_R_PIN | LED_G_PIN | LED_B_PIN;
GPIO_Init(GPIOC, &gpioInitStruct);
// 配置KEY1和KEY2引脚为输入模式
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE);
gpioInitStruct.GPIO_Mode = GPIO_Mode_IPU;
gpioInitStruct.GPIO_Pin = GPIO_Pin_0;
GPIO_Init(GPIOA, &gpioInitStruct);
gpioInitStruct.GPIO_Pin = GPIO_Pin_13;
GPIO_Init(GPIOC, &gpioInitStruct);
// 配置外部中断线0和线13
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13);
EXTI_InitTypeDef extiInitStruct;
extiInitStruct.EXTI_Line = EXTI_Line0 | EXTI_Line13;
extiInitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
extiInitStruct.EXTI_Trigger = EXTI_Trigger_Rising_Falling; // 上升沿和下降沿触发
extiInitStruct.EXTI_LineCmd = ENABLE;
EXTI_Init(&extiInitStruct);
NVIC_InitTypeDef nvicInitStruct;
nvicInitStruct.NVIC_IRQChannel = EXTI0_IRQn;
nvicInitStruct.NVIC_IRQChannelPreemptionPriority = 0x01; // 中断优先级为1
nvicInitStru<br/><br/><br/><font size=1 color=#CCCCCC>内容由零声教学AI助手提供,问题来源于学员提问</font>