ZBLOG

void EXTI0_IRQHandler() { uint16_t status1 = 0; uint16_t status2 = 0; if (EXTI_GetITStatus(EXTI_Line0) == SET) { status1 = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0); status2 = GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13); EXTI_ClearITPendingBit(EXTI_L...

根据你的需求,我帮你修改了代码实现按键控制灯的闪烁。请注意,以下代码是基于某个具体硬件平台的示例,如果你在不同的平台上使用,请相应地修改引脚定义和函数调用。

”`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) {

  1. 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);

  1. GPIO_InitTypeDef gpioInitStruct;
  2. gpioInitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
  3. gpioInitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  4. gpioInitStruct.GPIO_Pin = LED_R_PIN | LED_G_PIN | LED_B_PIN;
  5. GPIO_Init(GPIOC, &gpioInitStruct);
  6. // 配置KEY1和KEY2引脚为输入模式
  7. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE);
  8. gpioInitStruct.GPIO_Mode = GPIO_Mode_IPU;
  9. gpioInitStruct.GPIO_Pin = GPIO_Pin_0;
  10. GPIO_Init(GPIOA, &gpioInitStruct);
  11. gpioInitStruct.GPIO_Pin = GPIO_Pin_13;
  12. GPIO_Init(GPIOC, &gpioInitStruct);
  13. // 配置外部中断线0和线13
  14. RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
  15. GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
  16. GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13);
  17. EXTI_InitTypeDef extiInitStruct;
  18. extiInitStruct.EXTI_Line = EXTI_Line0 | EXTI_Line13;
  19. extiInitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
  20. extiInitStruct.EXTI_Trigger = EXTI_Trigger_Rising_Falling; // 上升沿和下降沿触发
  21. extiInitStruct.EXTI_LineCmd = ENABLE;
  22. EXTI_Init(&extiInitStruct);
  23. NVIC_InitTypeDef nvicInitStruct;
  24. nvicInitStruct.NVIC_IRQChannel = EXTI0_IRQn;
  25. nvicInitStruct.NVIC_IRQChannelPreemptionPriority = 0x01; // 中断优先级为1
  26. nvicInitStru<br/><br/><br/><font size=1 color=#CCCCCC>内容由零声教学AI助手提供,问题来源于学员提问</font>

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=9133

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?