嵌入式-stm32学习:使用固件库点亮LED
bsp_led.h
#ifndef __LED_H
#define __LED_H#include "stm32f4xx.h"//引脚定义
/*******************************************************/
//红色灯 R
#define LED1_PIN GPIO_Pin_10 //GPIO引脚号
#define LED1_GPIO_PORT GPIOH //GPIO端口H
#define LED1_GPIO_CLK RCC_AHB1Periph_GPIOH //GPIO端口时钟//绿色灯 G
#define LED2_PIN GPIO_Pin_11
#define LED2_GPIO_PORT GPIOH
#define LED2_GPIO_CLK RCC_AHB1Periph_GPIOH//蓝色灯 B
#define LED3_PIN GPIO_Pin_12
#define LED3_GPIO_PORT GPIOH
#define LED3_GPIO_CLK RCC_AHB1Periph_GPIOH
/************************************************************//** 控制LED亮灭的宏,* 低电平亮,ON=0,OFF=1,* 高电平亮,ON=1,OFF=0*/
#define ON 0
#define OFF 1/* 带参宏 */
#define LED1(a) if (a) \GPIO_SetBits(LED1_GPIO_PORT,LED1_PIN);\else \GPIO_ResetBits(LED1_GPIO_PORT,LED1_PIN)#define LED2(a) if (a) \GPIO_SetBits(LED2_GPIO_PORT,LED2_PIN);\else \GPIO_ResetBits(LED2_GPIO_PORT,LED2_PIN)#define LED3(a) if (a) \GPIO_SetBits(LED3_GPIO_PORT,LED3_PIN);\else \GPIO_ResetBits(LED3_GPIO_PORT,LED3_PIN)/* 直接操作寄存器的方法控制IO */
#define digitalHi(p,i) {p->BSRRL=i;} //输出高电平
#define digitalLo(p,i) {p->BSRRH=i;} //输出低电平
#define digitalToggle(p,i) {p->ODR ^=i;} //输出翻转状态/* 定义控制IO的宏 */
#define LED1_TOGGLE digitalToggle(LED1_GPIO_PORT,LED1_PIN) //翻转
#define LED1_OFF digitalHi(LED1_GPIO_PORT,LED1_PIN)//关
#define LED1_ON digitalLo(LED1_GPIO_PORT,LED1_PIN)//开#define LED2_TOGGLE digitalToggle(LED2_GPIO_PORT,LED2_PIN)
#define LED2_OFF digitalHi(LED2_GPIO_PORT,LED2_PIN)
#define LED2_ON digitalLo(LED2_GPIO_PORT,LED2_PIN)#define LED3_TOGGLE digitalToggle(LED3_GPIO_PORT,LED3_PIN)
#define LED3_OFF digitalHi(LED3_GPIO_PORT,LED3_PIN)
#define LED3_ON digitalLo(LED3_GPIO_PORT,LED3_PIN)/* 基本混色 */
//红
#define LED_RED \LED1_ON;\LED2_OFF;\LED3_OFF//绿
#define LED_GREEN \LED1_OFF;\LED2_ON;\LED3_OFF//蓝
#define LED_BLUE \LED1_OFF;\LED2_OFF;\LED3_ON//黄
#define LED_YELLOW \LED1_ON;\LED2_ON;\LED3_OFF
//紫
#define LED_PURPLE \LED1_ON;\LED2_OFF;\LED3_ON//青
#define LED_CYAN \LED1_OFF;\LED2_ON;\LED3_ON//白
#define LED_WHITE \LED1_ON;\LED2_ON;\LED3_ON//黑(全关)
#define LED_RGBOFF \LED1_OFF;\LED2_OFF;\LED3_OFF void LED_GPIO_Config(void); //定义LED-GPIO初始化配置函数#endif /* __LED_H */
bsp_led.c
#include "./led/bsp_led.h" /*** 初始化控制LED的IO*/
void LED_GPIO_Config(void)
{ /*定义一个GPIO_InitTypeDef类型的结构体*/GPIO_InitTypeDef GPIO_InitStructure;/*开启LED相关的GPIO外设时钟*/RCC_AHB1PeriphClockCmd ( LED1_GPIO_CLK|LED2_GPIO_CLK|LED3_GPIO_CLK, ENABLE); /*设置引脚模式为输出模式*/GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; /*设置引脚的输出类型为推挽输出*/GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;/*设置引脚为上拉模式*/GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;/*设置引脚速率为20MHz*/ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;/*选择要控制的GPIO引脚*/ GPIO_InitStructure.GPIO_Pin = LED1_PIN; /*调用库函数GPIO_Init,使用配置好的GPIO_InitTypeDef对GPIO端口初始化*/GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure); /*选择要控制的GPIO引脚*/ GPIO_InitStructure.GPIO_Pin = LED2_PIN; GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStructure); //初始化端口/*选择要控制的GPIO引脚*/ GPIO_InitStructure.GPIO_Pin = LED3_PIN; GPIO_Init(LED3_GPIO_PORT, &GPIO_InitStructure); /*关灯*/LED_RGBOFF;
}
/*********************************************END OF FILE**********************/
嵌入式-stm32学习:使用固件库点亮LED相关推荐
- GD32F405RGT6固件库点亮LED
GD32F405RGT6固件库点亮LED 趁着下班的功夫,把这几天熬夜针对这外设写好的库函数工程进行上传和一些叙述.哈哈哈哈 1.基于GD官方给的库工程的配置 一般的STM32F4的工程8M的外部晶振 ...
- stm32添加了固件库但是找不到h文件
stm32添加了固件库但是找不到h文件 像我就会经常使用别的的工程,有时候在上面添加一个功能可能会遇见这种情况. . -\SYSTEM\adc\adc.c(12): error: #20: ident ...
- 【stm32cubeMX】使用HAL库点亮LED流水灯
stm32cubeMX使用HAL库点亮LED流水灯 1.安装STM32CubeMX 2.安装HAL库 3.新建项目 4.keil仿真调试 五.实现 六.参考资料 1.安装STM32CubeMX 官网下 ...
- 嵌入式开发学习笔记9-做一个好玩的LED闪烁
嵌入式开发学习笔记9-做一个好玩的LED闪烁 前言 实际操作 程序功能 实现思路 程序源码 实现效果展示 前言 LED小灯闪烁实质是控制单片机上的I/O口,通过向I/O口循环输入高低电平,从而控制LE ...
- DSP(TMSF280049C)学习笔记2:点亮LED灯
DSP(TMSF280049C)学习笔记2:点亮LED灯 实验目的:点亮Texas InstrumentsTMSF280049C开发板,LED0与GPIO23相连,下载到FLASH,具体代码如下: # ...
- 【STM32】手把手固件库开发工程建立
再来复习一遍固件库开发方式的工程建立方法吧 -----针对STM32F10x系列(示例为F103C8T6,开发环境为MDK5) 目录 1 创建工程 2 在工程文件夹中手动创建四个文件夹 3 在固件库文 ...
- IAR FOR STM8 学习笔记 固件库 GPIO
经过一番挣扎,还是决定使用官方的固件库了.. 从网上下一个STM8S的固件库,记得是FOR IAR的. 找到里面的IAR模板就可以开始用了. 这些都是直接写好的库函数,可以直接调用,但首先得先读懂,先 ...
- stm32cubeMX使用HAL库点亮LED流水灯
系列文章目录 文章目录 系列文章目录 一.实验工具 二.STM32CubeMX生成代码使用HAL库点亮流水灯 1.安装STM32CubeMX 2.安装HAL库 3.新建项目 4.keil仿真调试 三. ...
- zigbee学习之路(二)点亮LED
一.前言 今天,我来教大家如何点亮led,这也是学习开发板最基础的步骤了. 二.原理分析 cc2530芯片跟虽然是51的内核,但是它跟51单片机还是有区别的,51单片机不需要对IO口进行配置,而cc2 ...
- ESP-12S学习(2)--点亮LED
跨过前面的一个烧录大坑,终于迎来自己的第一个小实验 一.工程下创建文件夹 这是我在调试的时候遇到的一个问题,串口打印的问题 我在调用uart_init()的时候报错没有定义,但是我明明就已经导入了ua ...
最新文章
- 全国计算机等级考试题库二级C操作题100套(第22套)
- python 元类 type_python Class:面向对象高级编程 元类:type
- 一览R基础包的六个高级绘图函数(盒型boxplot|条形barplot|直方hist|饼pie|dotchart|coplot)...
- 压测 mysql关闭连接_MySQL 压测
- android studio 修改文件后出现类型转换错误
- OpenShift 4 之获取版本升级路径图
- MATLAB图像生成函数Plot()总结
- 群集之 COROSYNC OPENAIS +PACEMAKER +REBD+WEB
- 2021年A特种设备相关管理(电梯)考试题库及A特种设备相关管理(电梯)证考试
- week15-字符串
- 弹幕有硬伤,转变主流成妄想
- 汉诺塔问题的总结(1)
- 史玉柱和他老同学的一段故事
- float取小数点后四位
- 微信小程序微商城(九):微信授权并实现个人中心页面页面
- 内部类有哪些好处?什么时候使用内部类
- 中国兽医参考实验室市场趋势报告、技术动态创新及市场预测
- 宋词欣赏 -- 李清照词全集
- 【华为交换机配置命令大全】
- 深度学习——深度学习发展历程