野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11856|回复: 1

第12章流水灯程序(课后作业)

[复制链接]
发表于 2016-12-14 12:58:39 | 显示全部楼层 |阅读模式
code
  1. #ifndef _BSP_LED_H
  2. #define _BSP_LED_H

  3. #include "stm32f10x.h"

  4. //#define GPIO_PIN                  GPIO_Pin_8
  5. //#define GPIO_PORT                 GPIOF
  6. //#define RCC_APB2_CLOCK_ENABLE     RCC_APB2Periph_GPIOF

  7. #define ON          1
  8. #define OFF         0
  9. #define LED_PB0_GPIO(a)     if(a)\
  10.                                     GPIO_ResetBits(GPIOB,GPIO_Pin_0);\
  11.                             else    GPIO_SetBits(GPIOB,GPIO_Pin_0);
  12. #define LED_PF7_GPIO(a)     if(a)\
  13.                                     GPIO_ResetBits(GPIOF,GPIO_Pin_7);\
  14.                             else    GPIO_SetBits(GPIOF,GPIO_Pin_7);
  15. #define LED_PF8_GPIO(a)     if(a)\
  16.                                     GPIO_ResetBits(GPIOF,GPIO_Pin_8);\
  17.                             else    GPIO_SetBits(GPIOF,GPIO_Pin_8);


  18. void Led_GPIO_PB0_Config(void);
  19. void Led_GPIO_PF7_Config(void);
  20. void Led_GPIO_PF8_Config(void);

  21. #endif /*_BSP_LED_H*/

  22. #include "bsp_led.h"
  23. /*先开启时钟,再配置GPIO引脚*/
  24. void Led_GPIO_PB0_Config(void)
  25. {
  26.         GPIO_InitTypeDef GPIO_PB0_InitStrcut;
  27.   
  28.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
  29.         GPIO_PB0_InitStrcut.GPIO_Pin = GPIO_Pin_0;
  30.         GPIO_PB0_InitStrcut.GPIO_Speed = GPIO_Speed_50MHz;
  31.         GPIO_PB0_InitStrcut.GPIO_Mode = GPIO_Mode_Out_PP;
  32.   
  33.   GPIO_Init(GPIOB,&GPIO_PB0_InitStrcut);
  34. }

  35. void Led_GPIO_PF7_Config(void)
  36. {
  37.         GPIO_InitTypeDef GPIO_PF7_InitStrcut;
  38.   
  39.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE);
  40.         GPIO_PF7_InitStrcut.GPIO_Pin = GPIO_Pin_7;
  41.         GPIO_PF7_InitStrcut.GPIO_Speed = GPIO_Speed_50MHz;
  42.         GPIO_PF7_InitStrcut.GPIO_Mode = GPIO_Mode_Out_PP;
  43.   
  44.   GPIO_Init(GPIOF,&GPIO_PF7_InitStrcut);
  45. }
  46. void Led_GPIO_PF8_Config(void)
  47. {
  48.         GPIO_InitTypeDef GPIO_PF8_InitStrcut;
  49.   
  50.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE);
  51.         GPIO_PF8_InitStrcut.GPIO_Pin = GPIO_Pin_8;
  52.         GPIO_PF8_InitStrcut.GPIO_Speed = GPIO_Speed_50MHz;
  53.         GPIO_PF8_InitStrcut.GPIO_Mode = GPIO_Mode_Out_PP;
  54.   
  55.   GPIO_Init(GPIOF,&GPIO_PF8_InitStrcut);
  56. }

  57. #include "stm32f10x.h"
  58. #include "bsp_led.h"

  59. void Delay(uint32_t count)
  60. {
  61.   for(;count!=0;count--);
  62. }
  63. int main(void)
  64. {
  65.   Led_GPIO_PB0_Config();
  66.   LED_PB0_GPIO(OFF);
  67.   
  68.   Led_GPIO_PF7_Config();
  69.   LED_PF7_GPIO(OFF);
  70.   
  71.   Led_GPIO_PF8_Config();

  72.   while(1)
  73.   {
  74.     LED_PF8_GPIO(OFF);
  75.     LED_PB0_GPIO(ON);
  76.     Delay(0x2FFFFF);
  77.     LED_PB0_GPIO(OFF);
  78.     LED_PF7_GPIO(ON);
  79.     Delay(0x2FFFFF);
  80.     LED_PF7_GPIO(OFF);
  81.     LED_PF8_GPIO(ON);
  82.     Delay(0x2FFFFF);
  83.   }
  84. }

复制代码


回复

使用道具 举报

 楼主| 发表于 2016-12-14 13:01:48 | 显示全部楼层
我感觉程序有点繁琐,大家有没有简单一点的,可以说说想法
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 12:15 , Processed in 0.026284 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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