ch32vxx模仿stm32位带操作

2024-06-17 05:08

本文主要是介绍ch32vxx模仿stm32位带操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

stm32系列中内核为cm3的芯片支持位带操作,国产芯片模仿stm32规格的很多(c8t6现实标准),最近买了块沁恒的ch32v103r8t6板子,ch32vxx系列是riscv内核的,不支持位带操作,这意味着好多代码没法直接借鉴(无奈)。

通过网络搜索和C语言重新学习(位域和宏),找到了以下替代方法。

typedef struct { //根据芯片内存大小端设置,当前为小端模式,大端反过来uint32_t bit0 :1;uint32_t bit1 :1;uint32_t bit2 :1;uint32_t bit3 :1;uint32_t bit4 :1;uint32_t bit5 :1;uint32_t bit6 :1;uint32_t bit7 :1;uint32_t bit8 :1;uint32_t bit9 :1;uint32_t bit10 :1;uint32_t bit11 :1;uint32_t bit12 :1;uint32_t bit13 :1;uint32_t bit14 :1;uint32_t bit15 :1;uint32_t bit16 :1;uint32_t bit17 :1;uint32_t bit18 :1;uint32_t bit19 :1;uint32_t bit20 :1;uint32_t bit21 :1;uint32_t bit22 :1;uint32_t bit23 :1;uint32_t bit24 :1;uint32_t bit25 :1;uint32_t bit26 :1;uint32_t bit27 :1;uint32_t bit28 :1;uint32_t bit29 :1;uint32_t bit30 :1;uint32_t bit31 :1;
} GPIO_REG;//只写了PA,其他同理
#define PAout(n)	(((GPIO_REG *)(&(GPIOA->OUTDR)))->bit##n)
#define PAin(n)		(((GPIO_REG *)(&(GPIOA->INDR)))->bit##n)

查看汇编可知。

自制的仿冒位带操作包含两次访存(一次lbu,一次sb),官方库包含一次调用一次访存(call GPIO_WriteBit,sw),性能上肯定有损失,但低速io场合应该够用,PAout已经测试过,可以正常使用。

这篇关于ch32vxx模仿stm32位带操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1068550

相关文章

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据6.FALSH编程时间,擦写次数7.I/O高低电平电压表格8.外设接口

SQL Server中,always on服务器的相关操作

在SQL Server中,建立了always on服务,可用于数据库的同步备份,当数据库出现问题后,always on服务会自动切换主从服务器。 例如192.168.1.10为主服务器,12为从服务器,当主服务器出现问题后,always on自动将主服务器切换为12,保证数据库正常访问。 对于always on服务器有如下操作: 1、切换主从服务器:假如需要手动切换主从服务器时(如果两个服务

JavaWeb系列二十: jQuery的DOM操作 下

jQuery的DOM操作 CSS-DOM操作多选框案例页面加载完毕触发方法作业布置jQuery获取选中复选框的值jQuery控制checkbox被选中jQuery控制(全选/全不选/反选)jQuery动态添加删除用户 CSS-DOM操作 获取和设置元素的样式属性: css()获取和设置元素透明度: opacity属性获取和设置元素高度, 宽度: height(), widt

PS的一些操作~持续抄袭中....

套索工具使用时移动图片——按住空格键,鼠标左键按住,拖动!

帆软报表常用操作

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 帆软报表常用操作 多序号实现使用数据集作为参数空白页或者竖线页修改页面Title金额,或者保留两位小数等等设置日期格式显示图片使用公式 多序号实现 所用函数为SEQ(),如果一张报表中需要用到多个序号,那么就需要加入参数SEQ(1),SEQ(

el-upload 上传图片及回显照片和预览图片,文件流和http线上链接格式操作

<div v-for="(info, index) in zsjzqwhxqList.helicopterTourInfoList" :key="info.id" >编辑上传图片// oss返回线上地址http链接格式:<el-form-itemlabel="巡视结果照片":label-width="formLabelWidth"><el-upload:action="'http:

Git代码管理的常用操作

在VS022中,Git的管理要先建立本地或远程仓库,然后commit到本地,最后push到远程代码库。 或者不建立本地的情况,直接拉取已有的远程代码。 Git是一个分布式版本控制系统,用于跟踪和管理文件的变化。它可以记录文件的修改历史,并且可以轻松地回滚到任何历史版本。 Git的基本概念包括: 仓库(Repository):Git使用仓库来存储文件的版本历史。一个仓库可以包含多个文件

高性能MYsql读书笔记-加快alter table操作的速度

alte tabe 会导致事务中断。 方法1  使用 alter column 代替 modify column  方法2  不推荐。。 ALTER TABLE      [  ALTER COLUMN    / MODIFY COLUMN  /  CHANGE COLUMN  ] ALTER TABLE sakila.film MODIFY COLUMN rental