当前位置: 首页 > news >正文

【N32L40X】学习笔记03-gpio输出库

gpio输出

  1. 该函数库的目的就是在统一的地方配置,将配置的不同项放置在一个结构体内部
  2. 使用一个枚举来定义一个的别名

led.c

#include <stdio.h>
#include "led/bsp_led.h"static led_t leds[LED_NUM]={{GPIOB,GPIO_PIN_2,RCC_APB2_PERIPH_GPIOB},{GPIOB,GPIO_PIN_1,RCC_APB2_PERIPH_GPIOB},{GPIOB,GPIO_PIN_0,RCC_APB2_PERIPH_GPIOB},{GPIOC,GPIO_PIN_5,RCC_APB2_PERIPH_GPIOC},{GPIOC,GPIO_PIN_4,RCC_APB2_PERIPH_GPIOC},{GPIOC,GPIO_PIN_3,RCC_APB2_PERIPH_GPIOC},{GPIOC,GPIO_PIN_2,RCC_APB2_PERIPH_GPIOC},{GPIOC,GPIO_PIN_1,RCC_APB2_PERIPH_GPIOC},{GPIOB,GPIO_PIN_3,RCC_APB2_PERIPH_GPIOB},};/*LED初始化
*/
static void bsp_led_init (led_t *pled)
{GPIO_InitType GPIO_InitStructure;/* Check the parameters */assert_param(IS_GPIO_ALL_PERIPH(pled->gpiox));RCC_EnableAPB2PeriphClk(pled->gpio_rcc, ENABLE);/* Configure the GPIO pin */if (pled->pin <= GPIO_PIN_ALL){GPIO_InitStruct(&GPIO_InitStructure);GPIO_InitStructure.Pin        = pled->pin;GPIO_InitStructure.GPIO_Current = GPIO_DC_12mA;GPIO_InitStructure.GPIO_Pull    = GPIO_No_Pull;GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;GPIO_InitPeripheral(pled->gpiox, &GPIO_InitStructure);}
}/*led 开关
*/
void led_on_off(em_led_t id,Bit_OperateType sta)
{led_t *pled=NULL;if(LED_NUM>id){pled =  leds+id;GPIO_WriteBit(pled->gpiox,pled->pin,sta);}}
/*led 闪烁
*/
void led_on_blink(em_led_t id)
{led_t *pled=NULL;if(LED_NUM>id){pled =  leds+id;GPIO_WriteBit(pled->gpiox,pled->pin,(Bit_OperateType)!GPIO_ReadOutputDataBit(pled->gpiox,pled->pin));}}/*一键初始化所有LED
*/
void bsp_leds_init(void)
{for(int i=0;i<LED_NUM;i++){bsp_led_init(leds+i);}
}

led.h

#ifndef _BSP_LED_H_
#define _BSP_LED_H_
#include <stdint.h>
#include "n32l40x.h"#define  ON   Bit_SET 
#define  OFF  Bit_RESETtypedef enum
{LED0,//LED1,//LED2,//LED3,//LED4,//LED5,//LED6,//led灯LED7,//led灯LED8,//485输出控制LED_NUM//gpio输出数量
}em_led_t;typedef struct
{GPIO_Module* gpiox;uint16_t pin;uint32_t gpio_rcc;
}led_t;/*一键初始化所有LED
*/
void bsp_leds_init(void);
/*led 开关
*/
void led_on_off(em_led_t id,Bit_OperateType sta);/*led 闪烁
*/
void led_on_blink(em_led_t id);#endif
http://www.lryc.cn/news/95722.html

相关文章:

  • WebClient,HTTP Interface远程调用阿里云API
  • 飞书ChatGPT机器人 – 打造智能问答助手实现无障碍交流
  • React、Vue框架如何实现组件更新,原理是什么?
  • 常见面试题之设计模式--策略模式
  • redis多key问题
  • kafka第三课-可视化工具、生产环境问题总结以及性能优化
  • 2_Apollo4BlueLite中断控制器NVIC
  • WAIC2023:图像内容安全黑科技助力可信AI发展
  • 微信小程序quickstartFunctions中云函数的应用
  • Go学习 2、程序结构
  • SpringBoot整合JavaMail
  • Spring6——入门
  • 【计算机视觉 | 目标检测 | 图像分割】arxiv 计算机视觉关于目标检测和图像分割的学术速递(7 月 17 日论文合集)
  • 为什么需要GP(Global Platform)认证?
  • eclipse 格式化代码 快捷键
  • 深入探索Socks5代理与网络安全
  • 【NLP】如何使用Hugging-Face-Pipelines?
  • 网络安全(黑客)自学笔记
  • spring数据校验
  • 因材施教,有道发布“子曰”教育大模型,落地虚拟人口语教练等六大应用
  • golang waitgroup
  • 单列模式多学两遍
  • Spring Cloud【SkyWalking网络钩子Webhooks、SkyWalking钉钉告警、SkyWalking邮件告警】(十六)
  • 【力扣每日一题】2023.7.25 将数组和减半的最少操作次数
  • Docker-Compose 轻松搭建 Grafana+InfluxDb 实用 Jmeter 监控面板
  • 异构线程池的c++实现方案
  • Python实现抽象工厂模式
  • @vue/cli安装
  • 用友全版本任意文件上传漏洞复现
  • 程序员面试系列,MySQL常见面试题?