- 博客(60)
- 收藏
- 关注

原创 在嵌入式系统编程中,如何正确地使用位掩码和位操作?
使用位掩码宏:通常,硬件抽象层(HAL)或标准外设库会提供位掩码宏,这些宏定义了寄存器中每个位的掩码。这些示例和描述展示了如何在嵌入式系统编程中使用位掩码和位操作来访问和修改寄存器的特定位。位与操作(AND):使用&操作符来检查特定位的状态。位清零操作(AND NOT):使用&操作符与位掩码的补码来清除特定位。位异或操作(XOR):使用^操作符来切换特定位的状态。使用宏定义来创建一个位掩码,该掩码用于操作寄存器的特定位。位或操作(OR):使用|操作符来设置特定位。使用位移操作来移动位字段。
2024-08-10 20:06:22
2374

原创 c语言系列文章目录
关于标准输入输出函数的一点理解关于结构体、枚举和typedef的组合理解关于指针、函数和数组混用后 ,声明如何解析的一点个人见解关于结构体、define和enum中 ;和,使用的区别代码命名规范收集C语音在嵌入式中各种报错信息
2024-07-20 08:35:14
340
原创 X86-64系统的汇编指令
例子:-12(%rbp) -> 地址为:%rbp-12。12(%rdi,%rcx,4) -> 地址为:12+ %rbp +%rcx * 4。寄存器:%rax :寄存器指针中的值或者空间 ,寄存器的空间。64位(r) -32位(e)-16为(取e)-8位(结尾l)pushq %rax,表示将%rax中值保存到栈中。popq %rax,弹出栈顶元素,放入%rax中。内存引用:( ) :一个地址的解引用,是内存空间。汇编的本质是 内存和寄存器之间的数据交换。
2024-12-13 11:38:38
990
原创 关于二叉树递归的几种要点
基本情况是递归停止的条件,而递归情况是函数调用自己来解决问题的一部分。可能还有一层处理问题的基本情况,比如找节点,找深度,找到了直接返回。基本情况:一定有一个root为NULL的的情况,直接返回。递归算法通常意味着对每个节点进行相同操作,如果该节点有。如果没有子节点,直接返回。没找到就继续向左右子树查找。如果是返回最深层的节点个数,,则同样的操作也会应用到其。(base case)和。左边没找到去右边找。
2024-11-18 10:02:21
389
原创 王道考研之数据结构顺序表和链表
线性表:具有相同数据的序列。线性的表包含顺序表(数组)和链表。概念描述位序从1开始计数,用i表示位序。数组下标从0开始计数,用index表示数组下标,其中表头元素线性表的第一个元素。表尾元素线性表的最后一个元素。前驱前一个元素,即当前元素的前一个位置的元素。后驱后一个元素,即当前元素的后一个位置的元素。顺序表:逻辑上相邻的元素,物理上也相邻。----数组结构。
2024-11-08 20:20:22
497
1
原创 几大排序算法(持续补充)
直到找到满足排序的下标(主动break出循环,记录下标)。但是如果遍历完整个有效数组后,都不满足排序,此时j=-1(会自动出循环时的下标,记录下标);3.当有效数组中元素和tmp相比,当不满足排序时:就向后挪动数据,并且数组下标j–;总结就是:不满足排序,挪动数据 满足排序记录下标,在。2.有效数组:指插入数字tmp前面的所有数据构成的数组。当升序时,a[j]tmp。
2024-11-04 19:52:46
387
原创 Datasheet SHT20芯片的数据手册
14位有效,我以为是将后二位删除,实际上看完手册才知道是后二位值无用,不是删除,而是清0,实际上还是16为,知识后二位是0还是1,都不在关注,同意清零。I2C读取湿度传感器返回的16位数据。Datasheet SHT20芯片的数据手册。
2024-09-12 19:09:47
415
原创 关于GD32外挂8080LCD芯片的疑问(非面向公开的,用于记录踩坑点)
通过ESMC来外挂外部存储器,通过地址映射来管理外部存储器的地址。EA0~EA24是对外暴露的地址线接口,RS为0表示CMD,RS为1表示DATARS接了FSMC地址线A0上,所以只需要A0为0就表示cmd,A0为1就表示DATA,我这种方法#define LcdSendData(dataVal) (*(volatile uint16_t *)0x64000003) = dataVal ,A0应该也是1呀?为什么不行呢你提到的寄存器地址和访问问题可以从以下几个方面分析:问题二. 地址对齐问题 可以
2024-09-03 11:11:59
1090
原创 基于状态机实现的按键释放、消抖、单击、双击、长按等功能
在这个状态下,代码检测按键是否稳定按下。如果是在长按状态在向释放状态迁移过程中,执行了获取长按的按键码值,则代表着是在长按结束时,系统响应长按。如果是在短按状态向长按状态迁移时,发生的动作(返回长按码值),则代表着是在长按开始时,执行了长按的动作。在这个状态下,代码检测是否有按键按下,如果按下,转移到消抖确认状态。如果是在长按状态在向释放状态迁移过程中,执行了获取长按的按键码值,则代表着是在长按结束时,系统响应长按。四个状态:释放,消抖、短按、长按,三个动作:三个返回值:长按码值、单击按码值、双击码值。
2024-08-25 16:53:45
717
原创 位掩码操作进阶
位掩码操作是低级编程中常用的技术,特别是在嵌入式系统、硬件抽象层(HAL)和操作系统内核编程中,它们允许程序员高效地访问和控制硬件寄存器的特定位。)来提取寄存器中特定位的值,然后可能通过位移操作(右移)来获取这些位的值。使用位移操作()来改变位的位置,然后使用位或操作(OR,使用位掩码和位移操作来填充或清除一个位域(bit field)。使用位移操作(
2024-08-12 07:30:22
944
原创 栈知识梳理和函数实现
栈(Stack):是只允许在一端进行插入或删除的线性表。首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作。栈顶(Top):线性表允许进行插入删除的那一端。栈底(Bottom):固定的,不允许进行插入和删除的另一端。空栈:不含任何元素的空表。栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构。
2024-07-27 21:27:02
566
原创 关于链表、顺序表、栈和队列的一些总结
关于链表、顺序表、栈和堆的一些总结1.顺序表2.链表2.1 单向链表2.1 带哨兵位双向循环链表3.栈4.队列1.顺序表2.链表2.1 单向链表2.1 带哨兵位双向循环链表3.栈4.队列
2024-07-27 20:56:28
335
原创 单向链表知识汇总
提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
2024-07-24 12:07:17
1017
原创 关于循环等待,跳出循环值的判断方法
int a=0;b=a;a++;求b等于多少?此处可以用逆推法a=5跳出循环,即上一个循环末尾a的值为5,= NULL)free(tail);
2024-07-24 09:14:09
702
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人