自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 uCOS-II系统中的任务就绪表

OSRdyGrp和OSRdyTbl[],其中OSRdyGrp是一个8位数据类型的OSRdyTbl[]是一个8位数据类型的图1图2这两幅图是最重要的,看懂了这两幅图,基本上就懂了一大半。图1:在OSRdyGrp中,任务按照优先级分组,8个任务为一组,一组占1位,当一组中的8个任务中有任意一个任务进入就绪态后,这个组所在的位也就被置1了。在OSRdyTbl[]中,它的每一个数据元素对应8个任务,因为他是8位类型数据的数组,所以每个元素的每一个位对应一个任务。

2023-11-23 18:57:24 1069

转载 [转]ARM架构与程序的本质

本文将结合ARM架构全面阐述程序的本质(什么是栈/堆,全局变量如何存储),以及深入理解函数调用过程,理解局部变量为啥具有临时性,函数如何传参,如何返回值等等。堆和栈说白了都只是内存(单片机上的SRAM)中的一块空闲的空间,只是他们的用法和位置有所区分。栈栈区是从高地址向低地址方向生长:高地址是栈底,低地址是栈顶,也使用高地址空间在使用低地址空间。但由起始地址(地址最低的地址),存放变量的字节地址是顺序且递增的。

2023-09-19 09:41:15 160 1

原创 HAL库中使用us级延时方法

再多使用一个定时器进行延时,这个办法要多再耗费一个定时器资源。这一知识点非常容易忽略掉,从而导致很多人遇到调试的时候,系统随机性的功能不正常的坑,从而浪费大把的时间,往往还想不到是DWT导致的——说这一方法是天坑可能一点也不为过。这是参考正点原子的代码,发现很巧妙的地方,他只对SYSTICK进行了读取VAL和LOAD寄存器的操作,没有改变其他寄存器的值。这是一个系统外设,专门用来为Cortex-M3及其以上芯片提供调试和追踪的硬件辅助功能,不过这还要多耗费一个定时器资源,感觉还是有些浪费。

2023-08-04 09:03:22 1035 1

原创 表驱动法(Table-Driven Approach)

但将2位的编号转换为1位的键值,可能过于复杂或没有规律,最合适的方法是建立一个保存该转换关系的索引表。如果按照这种方法写下去,那么在我的每一个函数里面,都必须作如此多的判断,写出的代码肯定很长,并且每一次处理,都要作许多次判断之后才找到正确的处理函数,代码的执行效率也不高。,表驱动的核心是key-handler,拿某个key去对应某个handler,只要条件符合key,那么就执行对应的handler。使用索引的时候,先用一个基本类型的数据从一张索引表中查出一个键值,然后再用这一个键值查出你需要的主数据。

2023-08-02 11:58:56 811 1

转载 [转](__attribute__((section(x))) 使用详解)

section我们知道在传统的C语言编程中程序结构是这样的。init_xx();...while(1)...先进行若干个初始化程序,然后在循环的执行一段代码。这样开发固然可以,但是这样有一个让人非常不爽的地方,就是每写一个初始化函数都要在main函数中调用,非常的不方便。但是如果使用section。

2023-07-11 09:17:46 920

原创 位域的概念

有些数据在存储时并不需要占用一个完整的字节,只需要占用一个或几个二进制位即可。例如开关只有通电和断电两种状态,用0和1表示足以,也就是用一个二进位。正是基于这种考虑,C语言又提供了一种数据结构,叫做**“位域”或“位段”**。位域是操控位的一种方法(操控位的另一种方法是使用按位运算符位域通过一个结构声明来建立:该结构声明为每个字段提供标签,并确定该字段的宽度。根据该声明, prnt包含4个1位的字段。由于每个字段恰好为1位,所以只能为其赋值1或0。

2023-05-06 10:50:13 267

原创 const char * 和 char *const

Bjarne在他的The C++ Programming Language里面给出过一个助记的方法:把一个声明从右向左读。Example作用或指向的字符串不可修改。在很多C标准库的函数里都能看到:加上的好处是避免不小心修改了不该修改的值,加上后就无法修改,会报错,这样做增加了安全性。扩大了该函数的参数的接收范围,使得函数更具通用性。不能把赋值给,否则会报错或者是警告

2023-05-05 17:05:29 83

原创 字节对齐初步了解

字节对齐主要是为了提高内存的访问效率,比如intel 32位cpu,每个总线周期都是从偶地址开始读取32位的内存数据,如果数据存放地址不是从偶数开始,则可能出现需要两个总线周期才能读取到想要的数据,因此需要在内存中存放数据时进行对齐。= 0, 不满足第三个原则,所以需要在后面补充两个字节,即最后内存对齐后占用的空间是0x0000~0x000B,一共12个字节。后填充三个字节,因此a对齐后占用的空间是0x0000 ~ 0x0003,b占用的空间是0x0004~0x0007, 然后是。

2023-05-05 12:13:58 56

原创 MODBUS初步了解+实践操作

modbus RTU协议只需要看懂功能码0x03,0x06,0x10这三个基本的就已经足够了;分别回想下其数据域部分:03-主机需要发送起始地址+寄存器数量,从机回复总字节数+数据;06-主机发送起始地址+数据内容(因为你只需要修改一个,所以起始地址就是所要修改的地址),从机返回起始地址+数据内容(发现居然一样!址+寄存器数量==,从机回复总字节数+数据;06-主机发送起始地址+数据内容(因为你只需要修改一个,所以起始地址就是所要修改的地址),从机返回起始地址+数据内容(发现居然一样!

2023-05-05 12:01:30 764

原创 数据结构之线性表的顺序存储结构(动态)

动态顺序存储

2023-03-03 10:11:53 152 1

原创 数据结构之线性表的顺序存储结构(静态)

数据结构,顺序表

2023-03-02 17:21:09 491

转载 【转载】C指针笔记

笔记

2023-01-06 18:50:39 54

原创 嵌入式中的位操作

嵌入式位操作

2022-12-29 15:33:22 518

原创 Vscode搭建C和C++开发环境

title: Vscode搭建C/C++开发环境date: 2021-09-23 18:37:59Vscode配置C/C++环境

2022-02-14 15:54:24 467

原创 typora教程

目录文章目录CSDN上的教程CNblogs上的教程图教程官方帮助CSDN上的教程CSDNCNblogs上的教程CNblogs1CNblogs2图教程图官方帮助官方帮助

2020-05-16 10:50:03 355

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除