BT8918D----GPIO模块

news2024/11/28 10:34:53

0 Preface/Foreword

1 宏定义和数据结构

1.1 gpio_t

typedef struct {
    psfr_t sfr;             //GPIO SFR ADDR
    u8 num;
    u8 type;                //type = 1,高压IO,没有300R的强上下拉电阻。 type = 0, 普通IO, 有内部300R上下拉电阻。
} gpio_t;

1.2 SFR枚举 

enum {
    GPIOxSET    =   0,
    GPIOxCLR,
    GPIOx,
    GPIOxDIR,
    GPIOxDE,
    GPIOxFEN,
    GPIOxDRV,
    GPIOxPU,
    GPIOxPD,
    GPIOxPU200K,
    GPIOxPD200K,
    GPIOxPU300,
    GPIOxPD300,
}; 

1.3 pfsr_t

typedef volatile unsigned long *psfr_t

2 API

2.1 gpio_cfg_init

代码案例:根据配置文件初始化指定GPIO口

void loudspeaker_mute_init(void)
{
    if (!xcfg_cb.spk_mute_en) {
        xcfg_cb.loudspeaker_unmute_delay = 0;
        return;
    }
    u8 io_num = xcfg_cb.spk_mute_io_sel;
    gpio_t *p = &mute_gpio;
    bsp_gpio_cfg_init(p, io_num);
    if (p->sfr == NULL) {
        return;
    }
    p->sfr[GPIOxDE] |= BIT(p->num);
    p->sfr[GPIOxDIR] &= ~BIT(p->num);
    if (xcfg_cb.high_mute) {
        p->sfr[GPIOxSET] = BIT(p->num);
    } else {
        p->sfr[GPIOxCLR] = BIT(p->num);
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/628687.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode - 18 四数之和

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 18. 四数之和 - 力扣(LeetCode) 题目描述 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], n…

selenium.chrome怎么写扩展拦截或转发请求?

Selenium WebDriver 是一组开源 API,用于自动测试 Web 应用程序,利用它可以通过代码来控制chrome浏览器! 有时候我们需要mock接口的返回,或者拦截和转发请求,今天就来实现这个功能。 代码已开源: https:/…

Spring AOP(面向切面编程)详解

文章目录 前言AOP 概述AOP的基本概念AOP 应用场景AOP 常用的接口 Spring AOP 实现方式基于XML的配置基于注解的配置 Spring AOP 的使用一、Spring 的 API 接口实现AOP二、自定义类实现AOP三、注解实现AOP 模拟实现 Spring AOP 前言 Spring 提供了功能强大IOC、AOP等功能&#…

文心一言 VS 讯飞星火 VS chatgpt (36)-- 算法导论5.3 6题

六、请解释如何实现算法 PERMUTE-BY-SORTING,以处理两个或更多优先级相同的情形。也就是说,即使有两个或更多优先级相同,你的算法也应该产生一个均匀随机排列。 文心一言: 算法 PERMUTE-BY-SORTING 是一种基于排序的随机排列算法…

【第二章:物理层】

目录 知识框架No.0 : 引言No.1 :通信基础一、基本概念二、两个公式lim求极限1、失真(失去真实性) 三、编码和调制四、数据交换方式 No.2 :传输介质一、导向型介质二、非导向型介质 No.3 :物理层设备一、中继器二、集线…

selenium:元素定位之xpath、css

元素定位是在做UI自动化测试中最重要的一环,要牢牢掌握定位的方法,才能更有效率的进行UI自动化测试。 常见的元素定位方式: idnametag_nameclass_namelink_textpartial_link_textxpathcss 其中id,name是具有唯一性的&#xff0…

高考攀升小红书热榜!互动量破千万,品牌如何毕业季营销?

光影间,又是一年毕业季,弹指之间,那些青葱岁月如同白驹过隙般悄然从指缝溜走。近期,一年一度的高考、大学毕业又来袭,登上各大社媒平台热搜,成为热门话题;本期,随小编一起运用小红书…

【C++】智能指针 学习总结 |std::shared_ptr |std::unique_ptr | std::weak_ptr

文章目录 前言一、智能指针介绍二、普通指针和智能指针的比较案例三、std::shared_ptr四、std::unique_ptr五、std::weak_ptr六、std::shared_ptr |std::unique_ptr | std::weak_ptr三大智能指针的区别 前言 参考答案:chatgpt 一、智能指针介绍 智能指针是C的一种…

chatgpt赋能python:Python循环执行一个函数:简单而高效的代码实现

Python循环执行一个函数:简单而高效的代码实现 Python是一种高级编程语言,非常流行,不仅因为它易于学习和使用,而且因为它的灵活性。Python编程语言有很多特性,其中包括使用函数模块化编程,这在大型项目中…

图文验证码怎么测试及自动化测试怎么解决验证码问题?

目录 前言 首先,来简单认识下验证码 1、验证码的由来和作用 2、验证码的存储 3、验证码的原理 如何测试验证码? 1、手动测试 2、自动化测试 总结: 前言 在对安全性有要求的软件(系统)中都存在验证码&#xf…

高级查询 — 连接查询

关于northwind 示例数据库 查询数据库中的表 show tables;查询表的表属性 desc xxx(表名);连接查询 1.概述 若一个查询同时涉及两个及以上的表,则称之为连接查询。也可以叫做多表查询。使用join关键字进行多表连接。 2.分类(按功能) 内连…

二阶低通滤波器(通用滤波器)

一阶低通滤波器的详细算法介绍请参看下面文章: 一阶RC算法公式和梯形图代码 PLC信号处理系列之一阶低通(RC)滤波器算法_反馈信号低通滤波器_RXXW_Dor的博客-CSDN博客1、先看看RC滤波的优缺点 优点:采用数字滤波算法来实现动态的RC滤波,则能很好的克服模拟滤波器的缺点; 1…

学院课程功能使用说明书

引子 越来越多的讲师入驻csdn,也有很多学员通过学院平台进行课程学习,我们收到越来越多用户的反馈,现在通过本帖子来对课程功能做一个介绍,简称课程功能使用说明书1.0版,有任何问题均可在帖子下留言。 讲师 如何成为…

Centos7部署项目

Centos7部署项目 Centos7部署项目Centos7安装gitCentos7从github拉取代码配置git配置用于提交代码的用户名配置用户邮箱生成公钥效果如下 github添加SSH key打开你的GitHub获取ssh key公钥内容验证 拉取项目新建空白文件夹拉取项目 使用Docker Compose创建项目容器创建docker-c…

DC LAB8SDC约束四种时序路径分析

DC LAB 1.启动DC2.读入设计3. 查看所有违例的约束报告3.1 report_constraint -all_violators (alias rc)3.2 view report_constraint -all_violators -verbose -significant_digits 4 (打印详细报告) 4.查看时序报告 report_timing -significant_digits 45. 约束组合逻辑(adr_i…

1句代码,挽回1000万损失

前言: 在企业中,出于数据安全和应用高可用,很多软件和企业会对工程文件、数据库等做自动备份和应用容灾等。一份数据或者文件会保留到很多地方,虽然满足了安全性的需求,但是会因为保存数据区间太久造成占用大量的存储成…

chatgpt赋能python:Python快速入门神器:入门教程

Python快速入门神器:入门教程 Python作为一种高级的编程语言,在近年来逐渐成为编程语言领域里面的一匹黑马,在数据科学、人工智能、自动化测试和WEB开发等领域都得到了广泛的应用。Python极易入门,使用简单,代码质量较…

UnityVR--组件8--Avatar骨骼映射遮罩

什么是Avatar 模型中的人物都具有结构相似的骨架,如果建立一个模型骨架结构的映射,就能将同一个动画应用于不同的模型中,这就是Avatar,实现了一种动画重定向的功能。一般使用3DMax、Maya制作并导出为.fbx的人物模型,在…

【MySQL】MySQL在Linux中的环境安装与基本使用

目录 一、MySQL环境的安装 1、MySQL环境安装 2、安装MySQL出现的问题 3、登录MySQl 3.1方案一 3.2方案二 4、修改MySQL配置文件 5、可选设置:开机自启动MySQL(云服务器没事一般不会关机) 二、MySQL数据库基础 1、一些概念 2、基本…

Java中进制转换的两种方法你知道吗?

目录 十进制转其他进制 其他进制转十进制 实战: A进制转B进制 关于大数运算可以参考躲不掉的高精度计算,蓝桥杯必考_高精度算法在哪些比赛考_无忧#的博客-CSDN博客 十进制转其他进制 使用 Integer.toString(int n,int radix) 方法,该方法…