小编在野火上学习完用固件库点亮一个LED灯后,自己编程做了一个LED流水灯。在这里分享给大家。

用proteus8.7做的仿真图:

固件库编程的方式,源码如下:

bps_LED_LS.h //用于声明全局变量,定义宏,声明全局变量

#ifndef _BSP_LED_H
#define _BSP_LED_H#include "stm32f10x.h"
extern uint16_t LED_G_GPIO_PIN; //声明全局变量,定义引脚,
extern GPIO_InitTypeDef  GPIO_InitStruct;  //声明全局变量,寄存器B的结构体#define LED_G_GPIO_PORT  GPIOB    //宏定义端口,便于移植
#define LED_G_GPIO_CLK  RCC_APB2Periph_GPIOB  //宏定义时钟使能//函数声明void LED_GPIO_Config(void);#endif /*_BSP_LED_H*/

bps_LED_LS.c //点亮一个LED灯的封装驱动函数文件

#include "bsp_LED_LS.h"void LED_GPIO_Config(void){  //初始化GPIO(一个完整的初始化函数)
RCC_APB2PeriphClockCmd(LED_G_GPIO_CLK, ENABLE); //开时钟,来自“stm32f10x_rcc.h”GPIO_InitStruct.GPIO_Pin = LED_G_GPIO_PIN;  //选择引脚(LED_G_GPIO_PIN为引脚变量)GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; //选择推挽输出“GPIO_Mode_Out_PP”来自stm32f10x_gpio.h的模式的枚举GPIO_InitStruct.GPIO_Speed =GPIO_Speed_50MHz; //选择推挽输出“GPIO_Speed_50MHz”来自stm32f10x_gpio.h的速率的枚举GPIO_Init(LED_G_GPIO_PORT, &GPIO_InitStruct); //&是取地址的意思,因为GPIO_InitStruct是一个结构体的变量
}

main.c //主函数文件

#include "stm32f10x.h"
#include "bsp_LED_LS.h"GPIO_InitTypeDef  GPIO_InitStruct;  //全局变量,寄存器B的结构体
uint16_t LED_G_GPIO_PIN=0x0001;       //全局变量,定义引脚,设定一个引脚初值void Delay(uint32_t count){   //延时函数for(;count!=0;count--);
}int main(void){while(1){LED_GPIO_Config();  //调用GPIO初始化函数,完成时钟的设置、引脚的选择、端口的输入输出模式和速率等的配置GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);  //GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin),一会儿灯又亮了(清零函数)  Delay(0xFFFFF);GPIO_SetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);  //GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin),一会儿灯灭掉了(置位函数)Delay(0xFFFFF);LED_G_GPIO_PIN =LED_G_GPIO_PIN<<1;if(LED_G_GPIO_PIN==0x0008){   //循环,将灯点亮的范围控制在PB0-PB2
LED_G_GPIO_PIN = 0x0001;
}}
}

仿真结果图:

三个LED依次循环点亮。

注意建立工程时选取的芯片与仿真时的芯片一致,proteus8.7中stm32的芯片类型很少,所以建立工程时需要注意。

简单的学习分享,希望对大家有所帮助!!!

STM32——用固件库实现流水灯(源码+仿真图)相关推荐

  1. 51单片机循环流水灯源码

    51单片机循环流水灯源码 #include <reg52.h> #include <intrins.h> void delay(unsigned char a) {unsign ...

  2. STM32(HAL库)流水灯配置及代码

    目录 一.Cube_MX配置及其原理: 二.代码详情(可自行跳转到此处) 一.Cube_MX配置及其原理: 1.选择合适的芯片,左侧输入芯片型号,右侧选择LQFP144双击打开芯片配置  2.点亮流水 ...

  3. 基于Keil、STM32,用C++编写流水灯程序

    关注+星标公众号,不错过精彩内容 作者 | strongerHuang 微信公众号 | 嵌入式专栏 通常来说,在单片机上编程,要么汇编,要么C语言,而用C++进行开发的很少,那么究竟能不能用C++开发 ...

  4. STM32 串口固件库中定义的几个中断标志什么意思?

    STM32 串口固件库中定义的几个中断标志位什么意思? #define USART_IT_PE                       ((uint16_t)0x0028) #define USA ...

  5. #STM32标准固件库的硬件SPI(NSS为软件)封装函数库

    #基于STM32标准固件库的硬件SPI(NSS为软件)封装函数库: 最近来回顾之前写过的SPI_Flash,打算重写一次SPI配置文件 spi协议最大的特点大概就是全双工了,因此stm32硬件spi的 ...

  6. 基于51单片机的花样流水灯设计(源码+仿真+设计报告)

    资料编号:113 采用51单片机的IO控制多个LED灯,实现多种模式的流水风,全套资料齐全:具体功能请看下方演示视频 113-基于51单片机的花样流水灯设计(源码+仿真+设计报告) 单片机最小系统介绍 ...

  7. 基于stm32单片机的台历日历计时器万年历Proteus仿真(源码+仿真+全套资料)

    资料编号:151 视频讲解: 151-基于stm32单片机的台历日历计时器万年历Proteus仿真(源码+仿真+全套资料) 采用stm32单片机作为主控,LCD屏幕上部分显示电子日历,下半屏幕显示台历 ...

  8. 基于stm32的秒表计时器设计系统Proteus仿真(源码+仿真+全套资料)

    资料编号:126 功能讲解: 采用stm32单片机作为控制器,数码管来显示秒表时间,三个按键作为开始 清零 暂停来控制秒表的计时,秒表可以显示小数点后面一位,最大可以显示999.9s,全套资料齐全:具 ...

  9. 基于stm32单片机一氧化碳可燃气体检测仿真(源码+仿真+参考论文)

    资料编号:054 采用stm32单片机作为控制芯片,通过STM32的ADC检测当前的气体浓度,LCD1602显示,并且可以自动控制风扇排气,也可以设置为手动排气.仿真采用Proteus8.9版本,程序 ...

  10. 基于stm32单片机农业智能温室大棚温湿度光照测量报警系统Proteus仿真(源码+仿真+论文)

    资料编号:146 视频讲解: 146-基于stm32单片机农业智能温室大棚温湿度光照测量报警系统Proteus仿真(源码+仿真+论文) 设计内容 本次嵌入式课程设计综合实验的内容为基于proteus的 ...

最新文章

  1. 遍历Stream并设置属性值
  2. 居然仅用浏览器,就完成了Spring Boot应用的开发与部署!
  3. php判断当前时间是否跨月,判断日期是否能跨月查询的js代码_javascript技巧
  4. 30万手表推荐_今年六十岁生日,儿子说要送只30万的手表,请问有哪些推荐?...
  5. ELK开机自启动脚本
  6. Hive 内置函数权威指南,操作大全
  7. nginx学习文档之三 nginx常用命令
  8. 去中心化无险永续合约Shield即将在以太坊-Kovan网络发布测试活动
  9. 181219每日一句
  10. SpringBoot项目获取Spring容器中的bean
  11. 学会计需要学计算机应用吗,会计都要学什么
  12. Linux上mysql忘记密码重置密码
  13. 云端虚拟化技术的应用
  14. 同比 数据模型 环比_同比和环比计算公式?
  15. Unity编辑器(Editor)的问题全解以及使用
  16. 定向灰盒fuzzing工具BEACON
  17. 小白零基础学习Java编程好学吗?
  18. macOS 切换python版本
  19. php7生命周期,PHP 的生命周期与模块的sapi 原理
  20. 正則表達式基本使用方法简单介绍

热门文章

  1. android vcard解析代码,Android从Intent获取vCard数据
  2. GIF、SVG、PNG、图片格式转换
  3. 看一看golang的官方包:strings
  4. 发现把图片拖放到百度翻译(fanyi.baidu.com)的文本框里,就能识别出图片里的文字
  5. Axure谷歌浏览器Chrome扩展程序安装方法
  6. 数据结构初步(十二)- 插入排序与希尔排序超详细图解分析
  7. Android 清理应用缓存
  8. Angular 2 升级到 Angular 5
  9. 3G到5G,运营商的“失落十年”
  10. 无法在linux下启用ttysac0串口 终端只打印信息,启动出现mmc0: error -110 whilst initialising SD card该如何解决?...