- 博客(44)
- 收藏
- 关注
原创 在嵌入式系统编程中,如何正确地使用位掩码和位操作?
使用位掩码宏:通常,硬件抽象层(HAL)或标准外设库会提供位掩码宏,这些宏定义了寄存器中每个位的掩码。这些示例和描述展示了如何在嵌入式系统编程中使用位掩码和位操作来访问和修改寄存器的特定位。位与操作(AND):使用&操作符来检查特定位的状态。位清零操作(AND NOT):使用&操作符与位掩码的补码来清除特定位。位异或操作(XOR):使用^操作符来切换特定位的状态。使用宏定义来创建一个位掩码,该掩码用于操作寄存器的特定位。位或操作(OR):使用|操作符来设置特定位。使用位移操作来移动位字段。
2024-08-10 20:06:22 1294
原创 c语言系列文章目录
关于标准输入输出函数的一点理解关于结构体、枚举和typedef的组合理解关于指针、函数和数组混用后 ,声明如何解析的一点个人见解关于结构体、define和enum中 ;和,使用的区别代码命名规范收集C语音在嵌入式中各种报错信息
2024-07-20 08:35:14 311
原创 关于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 945
原创 基于状态机实现的按键释放、消抖、单击、双击、长按等功能
在这个状态下,代码检测按键是否稳定按下。如果是在长按状态在向释放状态迁移过程中,执行了获取长按的按键码值,则代表着是在长按结束时,系统响应长按。如果是在短按状态向长按状态迁移时,发生的动作(返回长按码值),则代表着是在长按开始时,执行了长按的动作。在这个状态下,代码检测是否有按键按下,如果按下,转移到消抖确认状态。如果是在长按状态在向释放状态迁移过程中,执行了获取长按的按键码值,则代表着是在长按结束时,系统响应长按。四个状态:释放,消抖、短按、长按,三个动作:三个返回值:长按码值、单击按码值、双击码值。
2024-08-25 16:53:45 415
原创 位掩码操作进阶
位掩码操作是低级编程中常用的技术,特别是在嵌入式系统、硬件抽象层(HAL)和操作系统内核编程中,它们允许程序员高效地访问和控制硬件寄存器的特定位。)来提取寄存器中特定位的值,然后可能通过位移操作(右移)来获取这些位的值。使用位移操作()来改变位的位置,然后使用位或操作(OR,使用位掩码和位移操作来填充或清除一个位域(bit field)。使用位移操作(
2024-08-12 07:30:22 794
原创 栈知识梳理和函数实现
栈(Stack):是只允许在一端进行插入或删除的线性表。首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作。栈顶(Top):线性表允许进行插入删除的那一端。栈底(Bottom):固定的,不允许进行插入和删除的另一端。空栈:不含任何元素的空表。栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构。
2024-07-27 21:27:02 509
原创 关于链表、顺序表、栈和队列的一些总结
关于链表、顺序表、栈和堆的一些总结1.顺序表2.链表2.1 单向链表2.1 带哨兵位双向循环链表3.栈4.队列1.顺序表2.链表2.1 单向链表2.1 带哨兵位双向循环链表3.栈4.队列
2024-07-27 20:56:28 309
原创 单向链表知识汇总
提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
2024-07-24 12:07:17 951
原创 基于循环的一些理解方法
int a=0;b=a;a++;求b等于多少?此处可以用逆推法a=5跳出循环,即上一个循环末尾a的值为5,= NULL)free(tail);
2024-07-24 09:14:09 611
原创 关于位运算的一点进阶方法和记忆方法
口诀:同1或,结果为1,同0或,结果为原始值。| 看起来像不像1呢?看起来像1,就遇到1变成1,那么就知道遇到0,为原始值了。a&(a-1)
2024-07-22 23:58:49 373
原创 顺序表的基本概念和代码详解
顺序标的基本概念和代码详解静态特点:如果满了就不让插入 缺点:给多少的合适呢?这个很难确定N给小了不够用,N给大了浪费。
2024-07-22 22:17:49 547
原创 关于非真假逻辑大绕弯
多次被这种逻辑绕糊涂了,本次做个总结提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
2024-07-22 16:02:00 281
原创 USUART代码例程和库函数
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考。
2024-07-20 16:32:36 797
原创 使能寄存器,复位和时钟单元(RCU)和中断选择向量(nvic)
RCU 是复位和时钟单元,复位控制包括三种控制方式:电源复位、系统复位和备份域复位。时钟控制单元提供了一系列频率的时钟功能。章节3.19.1描述了RCU 的寄存器列表,章节3.19.2对 RCU 库函数进行说明。
2024-07-20 12:22:44 493
原创 基于内核DWT实现硬件延时
注意这种硬件延时的方式只在CoreTexM3以上的内核有效,低于该内核是无效的。一般调用DelayNms(5000)较为合适。
2024-07-19 23:06:25 361
原创 USART串口理论知识总结
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言USART串口print代码案例前言提示:这里可以添加本文要记录的大概内容:USART串口print代码案例#include <stdint.h>#include <stdio.h>#include "gd32f30x.h"static void Usb2ComGpioInit(void){ rcu_periph_clock_enable(RCU_GPIOA); //配置TX引脚
2024-07-18 18:41:15 1153
原创 收集C语音在嵌入式中各种报错信息
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档收集C语音在嵌入式中各种报错信息前言一、enum和switch的联合使用前言一、enum和switch的联合使用
2024-07-13 12:18:18 216
原创 关于结构体、define和enum;和,使用的区别
1.define 无;有#2.struct 内部元素以;分开 ,数组 和 enum以 ,分开。而且结束时都会有;3.区分 / \ 前除 后反斜杠?和除一致 |\未反斜杠。
2024-07-13 11:23:43 192
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人