STM32输入输出控制程序源码

[复制链接]
查看31 | 回复0 | 2020-5-29 02:20:03 | 显示全部楼层 |阅读模式
基于正点原子的开发板平台,测试输入和输出,熟悉嵌入式的基本的IO控制,附带程序源码,本程序的开发基于标准库,亲测有效,通过开发板上的4个按钮(KEY_UP、KEY0、KEY1和KEY2,来控制板上的LED和蜂鸣器,通过不同的输出来控制不同的输出,具体实现为按WKUP 按钮控制蜂鸣器,按KEY2按钮控制绿灯,按KEY1按钮控制绿灯,按KEY0按钮,红灯绿灯以1秒交替周期闪烁,蜂鸣器以1秒周期通断。

完整源码: InputOutputtest.7z (94.33 KB, 售价: 1 工控币)
部分源码:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "led.h"
  4. #include "beep.h"
  5. #include "key.h"


  6. int main(void)
  7. {
  8.         u8 key;
  9.         Stm32_Clock_Init(336,8,2,7);//设置时钟,168Mhz
  10.         delay_init(168);                //延时初始化
  11.         LED_Init();                                  //初始化与LED连接的硬件接口
  12.         BEEP_Init();                         //初始化蜂鸣器IO
  13.         KEY_Init();                 //初始化与按键连接的硬件接口
  14.         LED0=0;                                        //先点亮红灯
  15.         while(1)
  16.         {
  17.                 key=KEY_Scan(0);         //得到键值
  18.                    if(key)
  19.                 {                                                  
  20.                         switch(key)
  21.                         {                                 
  22.                                 case WKUP_PRES:        //控制蜂鸣器
  23.                                         BEEP=!BEEP;
  24.                                         break;
  25.                                 case KEY2_PRES:        //控制LED0翻转
  26.                                         LED0=!LED0;
  27.                                         break;
  28.                                 case KEY1_PRES:        //控制LED1翻转         
  29.                                         LED1=!LED1;
  30.                                         break;
  31.                                 case KEY0_PRES:        //同时控制LED0,LED1翻转
  32.                                 //        LED0=!LED0;
  33.                                 //  LED1=!LED1;
  34.                               
  35.                                                 while(1)
  36.                                                 {
  37. //                                                                HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_8);      
  38. //                            HAL_Delay(500);
  39. //                                                      
  40.                                                         LED0=0;
  41.                                                         LED1=1;
  42.                                                         BEEP=0;                  
  43.                                                         delay_ms(1000);
  44.                                                         LED0=1;      
  45.                                                         LED1=0;
  46.                                                         BEEP=1;  
  47.                                                         delay_ms(1000);
  48.                                                         LED0=0;
  49.                                                         LED1=0;
  50.                                                         BEEP=0;                  
  51.                                                         delay_ms(1000);
  52.                                                         LED0=1;
  53.                                                         LED1=1;
  54.                                                         BEEP=1;                  
  55.                                                         delay_ms(1000);
  56.                                                 }      
  57.                                                
  58.                                         break;
  59.                               
  60.                               
  61.                         }
  62.                 }else delay_ms(10);
  63.         }
  64. }
复制代码


回复

使用道具 举报

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

本版积分规则