【N32L40X】学习笔记03-gpio输出库
gpio输出
- 该函数库的目的就是在统一的地方配置,将配置的不同项放置在一个结构体内部
- 使用一个枚举来定义一个的别名
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相关文章:
【N32L40X】学习笔记03-gpio输出库
gpio输出 该函数库的目的就是在统一的地方配置,将配置的不同项放置在一个结构体内部使用一个枚举来定义一个的别名 led.c #include <stdio.h> #include "led/bsp_led.h"static led_t leds[LED_NUM]{{GPIOB,GPIO_PIN_2,RCC_APB2_PERIPH_GPIOB},{GP…...
WebClient,HTTP Interface远程调用阿里云API
HTTP Interface Spring 允许我们通过定义接口的方式,给任意位置发送 http 请求,实现远程调用,可以用来简化 HTTP 远程访问。需要webflux场景才可 <dependency><groupId>org.springframework.boot</groupId><artifactId&…...
飞书ChatGPT机器人 – 打造智能问答助手实现无障碍交流
文章目录 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 前言 在飞书中创建chatGPT机器人并且对话,在下面操作步骤中…...
React、Vue框架如何实现组件更新,原理是什么?
引言 React 和 Vue 都是当今最流行的前端框架,它们都实现了组件化开发模式。为了优化性能,两者都采用了虚拟DOM技术。当组件状态发生改变时,它们会使用虚拟DOM进行局部渲染比对,只更新必要的DOM节点,从而避免重新渲染整个组件树。本文将从React和Vue的组件更新原理入手,剖析两…...
常见面试题之设计模式--策略模式
1. 概述 先看下面的图片,我们去旅游选择出行模式有很多种,可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。 作为一个程序猿,开发需要选择一款开发工具,当然可以进行代码开发的工具有很多,可以选择Idea进行开发&a…...
redis多key问题
多key问题指的是在Redis中存在大量的key,如果这些key过多,超过了Redis可以容纳的内存大小,那么数据会被保存在交换空间(swap区),这会导致性能下降。 Redis是一种基于内存的缓存数据库,它的性能…...
kafka第三课-可视化工具、生产环境问题总结以及性能优化
一、可视化工具 https://pan.baidu.com/s/1qYifoa4 密码:el4o 下载解压之后,编辑该文件,修改zookeeper地址,也就是kafka注册的zookeeper的地址,如果是zookeeper集群,以逗号分开 vi conf/application.conf 启…...
2_Apollo4BlueLite中断控制器NVIC
1.概述 Apollo4BlueLite 的中断控制器是采用 ARM Cortex-M4 内核,并集成了 NVIC(Nested Vectored Interrupt Controller,嵌套向量中断控制器)作为其中断控制器。 NVIC 是 ARM Cortex-M 系列处理器中常用的中断控制器,…...
WAIC2023:图像内容安全黑科技助力可信AI发展
目录 0 写在前面1 AI图像篡改检测2 生成式图像鉴别2.1 主干特征提取通道2.2 注意力模块2.3 纹理增强模块 3 OCR对抗攻击4 助力可信AI向善发展总结 0 写在前面 2023世界人工智能大会(WAIC)已圆满结束,恰逢全球大模型和生成式人工智能蓬勃兴起之时,今年参…...
微信小程序quickstartFunctions中云函数的应用
1、在quickstartFunctions文件中新建文件夹和文件 2、index.js 文件书写 const cloud require(wx-server-sdk);cloud.init({env: cloud.DYNAMIC_CURRENT_ENV }); const db cloud.database();// 链表查询试卷和对应的题库 exports.main async (event, context) > {retu…...
Go学习 2、程序结构
2、程序结构 2.1 命名 一个名字必须以一个字母或下划线开头,后面可以跟任意数量的字母、数字或下划线。 大写字母和小写字母是不同的。 GO语言有25个关键字,关键字不能用于自定义名字。 还有大约30多个预定义名字,对应内建的常量、类型和函…...
SpringBoot整合JavaMail
SpringBoot整合JavaMail 简单使用-发送简单邮件 介绍协议 导入坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>添加配置 spring:mail:host: smtp.qq.co…...
Spring6——入门
文章目录 入门环境要求构建模块程序开发引入依赖创建java类创建配置文件创建测试类运行测试程序 程序分析启用Log4j2日志框架Log4j2日志概述引入Log4j2依赖加入日志配置文件测试使用日志 入门 环境要求 JDK:Java17(Spring6要求JDK最低版本是Java17&…...
【计算机视觉 | 目标检测 | 图像分割】arxiv 计算机视觉关于目标检测和图像分割的学术速递(7 月 17 日论文合集)
文章目录 一、检测相关(5篇)1.1 TALL: Thumbnail Layout for Deepfake Video Detection1.2 Cloud Detection in Multispectral Satellite Images Using Support Vector Machines With Quantum Kernels1.3 Multimodal Motion Conditioned Diffusion Model for Skeleton-based Vi…...
为什么需要GP(Global Platform)认证?
TEE之GP(Global Platform)认证汇总 一、为什么需要认证? 二、为什么是GP? 参考: GlobalPlatform Certification - GlobalPlatform...
eclipse 格式化代码 快捷键
在Eclipse中,可以使用以下快捷键来格式化代码: Windows/Linux快捷键:Ctrl Shift FMac快捷键:Command Shift F 按下相应的快捷键后,Eclipse将自动根据您的代码格式化偏好设置对代码进行格式化。请确保已经选择和配…...
深入探索Socks5代理与网络安全
简介 Socks5代理是一种网络协议,用于在客户端和服务器之间进行数据传输,它可以在网络层和传输层实现代理功能。与其他代理协议相比,Socks5代理更加灵活和安全,为爬虫任务和网络安全提供了重要支持。 Socks5代理的工作原理 Socks5…...
【NLP】如何使用Hugging-Face-Pipelines?
一、说明 随着最近开发的库,执行深度学习分析变得更加容易。其中一个库是拥抱脸。Hugging Face 是一个平台,可为 NLP 任务(如文本分类、情感分析等)提供预先训练的语言模型。 本博客将引导您了解如何使用拥抱面部管道执行 NLP 任务…...
网络安全(黑客)自学笔记
1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一是市场需求量高; 二则是发展相对成熟入门…...
spring数据校验
数据校验 概述 在开发中,会存在参数校验的情况,如:注册时,校验用户名不能为空、用户名长度不超过20个字符,手机号格式合法等。如果使用普通方式,会将校验代码和处理逻辑耦合在一起,在需要新增一…...
openclaw喂饭教程!在 Linux 环境下快速完成安装、初始化与 Web UI 配置
基础示例:单工作表 Excel 转 TXT 以下是将一个 Excel 文件中的第一个工作表转换为 TXT 的完整步骤: 1. 加载并读取Excel文件 from spire.xls import * from spire.xls.common import * workbook Workbook() workbook.LoadFromFile("示例.xlsx"…...
字节Agent开发岗面试血泪史:ReAct框架、IterResearch架构、训练流程全解析,小白必看!收藏!
字节Agent开发岗面试血泪史:ReAct框架、IterResearch架构、训练流程全解析,小白必看!收藏! 文章通过字节Agent开发岗校招面试实例,揭示候选人因缺乏底层逻辑和工程实现细节而失败。详细解析ReAct框架、IterResearch架构…...
告别局域网限制:用C-Lodop插件实现前端跨网段远程打印(保姆级配置指南)
突破物理边界:C-Lodop实现跨地域打印的工程实践 想象一下这样的场景:上海分公司的财务人员需要紧急打印一份合同,而唯一具备公章权限的打印机在北京总部。传统方案可能需要邮件转发、本地打印再扫描,或者依赖复杂的VPN配置——但现…...
智能车竞赛避坑指南:直道、弯道、十字路口图像识别,我的MT9V03X摄像头调试血泪史
智能车竞赛避坑指南:MT9V03X摄像头调试的七个关键陷阱 全国大学生智能汽车竞赛中,图像识别环节往往是决定胜负的关键。作为曾经在赛场上摸爬滚打的参赛者,我深刻理解使用MT9V03X摄像头调试过程中的种种痛苦——那些深夜调试、反复修改参数却…...
SpringBoot+MyBatis事务控制实战:从默认行为到精细化手动管理
1. SpringBootMyBatis事务的默认行为解析 第一次在SpringBoot项目中使用MyBatis时,我发现一个有趣的现象:明明没有显式开启事务,数据库操作却自动运行在事务中。后来通过日志分析才明白,这是SpringBoot的默认行为。就像我们去餐厅…...
别再让模型路径打架了!手把手教你用Simulink Project管理多项目(附MATLAB 2023b实操)
多项目并行开发利器:Simulink Project高效管理实战指南 在复杂的模型开发环境中,工程师们常常面临这样的困境:当你正专注于某个汽车电控单元的开发时,突然接到另一个航天器控制系统项目的紧急修改需求。匆忙切换工作目录后&#x…...
大比表氧化铈:催化与净化的新利器
你可能没注意到,一种微小的氧化物粉末,却在工业和环保领域发挥着重要作用。它就是大比表氧化铈。它的独特之处在于每克材料拥有非常大的表面积,可达上百平方米,这意味着它能与更多的气体或反应物接触,从而提升化学反应…...
基于Matlab的IMU姿态解算之旅:四元数姿态的奇妙融合
基于matlab的IMU姿态解算,姿态类型为四元数;角速度和线加速度的类型为三维向量。 IMU全称是惯性导航系统,主要元件有陀螺仪、加速度计和磁力计。 其中陀螺仪可以得到各个轴的加速度,而加速度计能得到x,y,z方向的加速度…...
3个场景解锁BongoCat:让呆萌猫咪成为你的终极桌面生产力伙伴
3个场景解锁BongoCat:让呆萌猫咪成为你的终极桌面生产力伙伴 【免费下载链接】BongoCat 让呆萌可爱的 Bongo Cat 陪伴你的键盘敲击与鼠标操作,每一次输入都充满趣味与活力! 项目地址: https://gitcode.com/gh_mirrors/bong/BongoCat 在…...
Dify工作流自动化架构解析:从零构建企业级AI应用开发平台
Dify工作流自动化架构解析:从零构建企业级AI应用开发平台 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程,自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Di…...
