STM32 LED灯的另一种写法
来源:互联网 发布:java 取svn版本号 编辑:程序博客网 时间:2024/04/29 12:43
STM32 LED灯的另一种写法
#ifndef __BSP_LED_#define __BSP_LED_#include <MM32x103.h> // 这个换成STM32的库文件就行#include "type.h"//==================================================================================#define LED1_RUN_GRP GPIOC#define LED1_RUN_IDX GPIO_Pin_6#define LED1_RUN_OFF() GPIO_ResetBits(LED1_RUN_GRP, LED1_RUN_IDX)#define LED1_RUN_ON() GPIO_SetBits(LED1_RUN_GRP, LED1_RUN_IDX)#define LED1_RUN_IS_OFF() GPIO_ReadOutputDataBit(LED1_RUN_GRP, LED1_RUN_IDX)#define LED2_RUN_GRP GPIOA#define LED2_RUN_IDX GPIO_Pin_11#define LED2_RUN_OFF() GPIO_ResetBits(LED2_RUN_GRP, LED2_RUN_IDX)#define LED2_RUN_ON() GPIO_SetBits(LED2_RUN_GRP, LED2_RUN_IDX)#define LED2_RUN_IS_OFF() GPIO_ReadOutputDataBit(LED2_RUN_GRP, LED2_RUN_IDX)#define LED3_RUN_GRP GPIOA#define LED3_RUN_IDX GPIO_Pin_12#define LED3_RUN_OFF() GPIO_ResetBits(LED3_RUN_GRP, LED3_RUN_IDX)#define LED3_RUN_ON() GPIO_SetBits(LED3_RUN_GRP, LED3_RUN_IDX)#define LED3_RUN_IS_OFF() GPIO_ReadOutputDataBit(LED3_RUN_GRP, LED3_RUN_IDX)//==================================================================================#define LED_COUNT 3 // LED个数自己定义typedef enum{ RED = 0x04, GREEN = 0x02, BLUE = 0x01} led_t;typedef struct{ GPIO_TypeDef *GPIOx; uint32_t pos;} led_port_t;//==================================================================================void GPIOConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIOMode_TypeDef GPIO_Mode);void LEDConfig((uint8_t value) // value:1/2/4 --- RED GREEN BLUE void LEDSet(uint8_t value);void LEDReset(uint8_t value);void LEDToggle(uint8_t value);#endif /* __BSP_LED_ */
#include "bsp_led.h"static led_port_t led_port[LED_COUNT] ={ {LED1_RUN_GRP, LED1_RUN_IDX}, /*蓝灯*/ {LED2_RUN_GRP, LED2_RUN_IDX}, /*绿灯*/ {LED3_RUN_GRP, LED3_RUN_IDX}, /*红灯*/};// GPIO配置void GPIOConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIOMode_TypeDef GPIO_Mode){ GPIO_InitTypeDef GPIO_InitStructure;//定义GPIO初始化结构体变量 // 这个GPIO口需要改的,根据自己情况而定 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOA, ENABLE); //开启GPIO时钟 //配置连接LED的GPIO为推挽输出模式 GPIO_InitStructure.GPIO_Pin = GPIO_Pin; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode; GPIO_Init(GPIOx, &GPIO_InitStructure);}// LED GPIO配置void LEDConfig((uint8_t value) // value:1/2/4 --- RED GREEN BLUE { uint8_t i, mask = 1; for(i = 0; i < LED_COUNT; ++i) { if(value & mask) { GPIOConfig(led_port[i].GPIOx, led_port[i].pos, GPIO_Mode_Out_PP); GPIO_ResetBits(led_port[i].GPIOx, led_port[i].pos); } mask <<= 1; }}/* 根据参数来打开LED灯 */void LEDSet(uint8_t value) { uint8_t i, mask = 1; for(i = 0; i < LED_COUNT; ++i) { if(value & mask) { GPIO_SetBits(led_port[i].GPIOx, led_port[i].pos); } mask <<= 1; }}/* 根据参数来关闭LED灯 */void LEDReset(uint8_t value){ uint8_t i, mask = 1; for(i = 0; i < LED_COUNT; ++i) { if(value & mask) { GPIO_ResetBits(led_port[i].GPIOx, led_port[i].pos); } mask <<= 1; }}// 取反void LEDToggle(uint8_t value){ uint8_t i, mask = 1; for(i = 0; i < LED_COUNT; ++i) { if(value & mask) { if(GPIO_ReadOutputDataBit(led_port[i].GPIOx, led_port[i].pos) == 0) { GPIO_SetBits(led_port[i].GPIOx, led_port[i].pos); } else { GPIO_ResetBits(led_port[i].GPIOx, led_port[i].pos); } } mask <<= 1; }}
0 0
- STM32 LED灯的另一种写法
- STM32的LED灯实验
- Update的另一种写法
- 赋值的另一种写法
- ViewHolder的另一种写法
- ViewHolder的另一种写法
- ViewHolder的另一种写法
- deltree.bat的另一种写法
- 另一种贪吃蛇的写法
- NOT EXISTS的另一种写法
- insert语句的另一种写法
- android数据库的另一种写法
- 说说ViewHolder的另一种写法
- handlebars-----另一种help的写法
- 说说ViewHolder的另一种写法
- 冒泡排序的另一种写法
- java休眠的另一种写法
- python单例类的另一种写法
- 等式变换
- 忙了一天
- mvc 继承Controller类,每个控制器都继承它,实现统一验证登录
- Android .9.png “点九”图片的使用
- 一键拷贝命令小工具(附源码)
- STM32 LED灯的另一种写法
- EAS编辑界面手动融合方法
- 多多儿小说网上线了,www.dodoer.com
- WebView你真的熟悉吗?看了才知道
- 如何上传base64编码图片到七牛云
- js函数和对象的魅力之this、return和上下文环境的功劳(小感悟)
- Java 注解Annotation
- 多继承和虚继承中sizeof(类)
- 1018. Public Bike Management (30)-PAT甲级真题(Dijkstra + DFS)