找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3020|回复: 0
收起左侧

野火挑战者USART1控制LED彩灯程序测试成功

[复制链接]
ID:221330 发表于 2019-4-12 10:16 | 显示全部楼层 |阅读模式
两个按键控制彩灯的红、绿灯反转,按一下KEY1 红灯反转一次,按一下KEY2,绿灯反转一次。

使用EXTI中断方式检测按键输入。
检测到按键引脚上升沿会进入中断,在stm32f4xx_it.c文件中的中断服务函数处理。

学习目的:了解STM32的中断系统。
【*】 引脚分配
KEY:
两个按键均有硬件去抖,按下的时候均为高电平,不按时为低电平。

    KEY1<--->PA0
    KEY2<--->PC13

LED:
RGB彩灯的三个阴极接到STM32三个引脚上,LED低电平亮。

    R<--->PH10
    G<--->PH11
    B<--->PH12
   
    LED4<--->PD11

单片机源程序如下:
  1. #include "stm32f4xx.h"
  2. #include "./led/bsp_led.h"
  3. #include "./key/bsp_exti.h"
  4. #include "./usart/bsp_debug_usart.h"

  5. void Delay(__IO u32 nCount);
  6. /*************************输出提示信息*************************************/
  7. static void show_Message(void)
  8. {
  9.         printf("\r\n 这是一个通讯串口的实验控制RGB彩灯 \n");
  10.         printf(" 使用 USART1 参数为:%d 8-N-1 \n",DEBUG_USART_BAUDRATE);
  11.         printf("开发板接到的指令后控制RGB彩灯颜色,指令对应如下: \n");
  12.         printf("   指令 ---------------灯的颜色\n");
  13.         printf("   1 -------   --------红\n");
  14.         printf("   2 -------   --------绿\n");
  15.         printf("   3 -------   --------蓝\n");
  16.         printf("   4 -------   --------黄n");
  17.         printf("   5 -------   --------紫\n");
  18.         printf("   6 -------   --------青\n");
  19.         printf("   7 -------   --------白\n");
  20.         printf("   8 -------   --------灭\n");
  21.        
  22. }


  23. /**
  24.   * @brief  主函数
  25.   * @param  无
  26.   * @retval 无
  27.   */
  28.        
  29. int main(void)
  30. {
  31.         char ch;
  32.         /* LED 端口初始化 */
  33.         LED_GPIO_Config();
  34.          
  35.         /* 初始化EXTI中断,按下按键会触发中断,
  36.   *  触发中断会进入stm32f4xx_it.c文件中的函数
  37.         *  KEY1_IRQHandler和KEY2_IRQHandler,处理中断,反转LED灯。
  38.         */
  39.         EXTI_Key_Config();
  40.         /* 等待中断,由于使用中断方式,CPU不用轮询按键 */
  41.         Debug_USART_Config();
  42.        
  43.         show_Message();
  44.        
  45.         Usart_SendString(DEBUG_USART,"串口发送接收");
  46.        
  47.        
  48.                 while(1)                           
  49.         {
  50.                 ch = getchar();
  51.                 printf("接收到的字符:%c\n",ch);
  52.                
  53.                 switch(ch)
  54.                 {
  55.                         case '1':
  56.                                 LED_RED;
  57.                                 break;
  58.                         case '2':
  59.                                 LED_GREEN;
  60.                                 break;
  61.                         case '3':
  62.                                 LED_BLUE;
  63.                                 break;
  64.                         case '4':
  65.                                 LED_YELLOW;
  66.                           break;
  67.                         case '5':
  68.                                 LED_PURPLE;
  69.                                 break;
  70.                         case '7':
  71.                                 LED_CYAN;
  72.                                 break;
  73.                         case '8':
  74.                                 LED_WHITE;
  75.                                 break;
  76.                         case '9':
  77.                                 LED_RGBOFF;
  78.                                 break;
  79.                        
  80.                 }

  81.   }
  82. }

  83. /*********************************************END OF FILE**********************/
复制代码

所有资料51hei提供下载:
10-EXTI—外部中断.7z (352.51 KB, 下载次数: 25)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表