
嵌入式
文章平均质量分 70
pl0020
这个作者很懒,什么都没留下…
展开
-
使用CJSON 解析JSON 结构体数组【典型】
一、CJSON数据结构定义#define cJSON_False 0#define cJSON_True 1#define cJSON_NULL 2#define cJSON_Number 3#define cJSON_String 4#define cJSON_Array 5 //数组#define cJSON_Object 6 //对象or键名typedef struct cJSON { struct cJSON *next,*prev; /*遍历数组或对象链的前向原创 2021-11-20 19:46:37 · 22274 阅读 · 2 评论 -
RT Thread studio同时生成bin和hex文件
一、RTT默认生成bin文件默认选择Raw binary,则项目对应的debug文件夹下生成bin文件;修改成intel的话,则项目对应的debug文件夹下生产hex文件;二、同时生成bin和hex文件项目 属性-C/C++构建-设置-构建步骤-命令arm-none-eabi-objcopy -O ihex"rtthread.elf" "rtthread.hex"...原创 2021-09-02 23:12:40 · 2550 阅读 · 1 评论 -
调度器锁rt_enter_critical() & rt_exit_critical()
一、函数说明void rt_enter_critical(void); /* 进入临界区*/调用这个函数后,调度器将被上锁。在系统锁住调度器的期间,系统依然响应中断,如果中断唤醒了的更高优先级线程,调度器并不会立刻执行它,直到调用解锁调度器函数才尝试进行下一次度。void rt_exit_critical(void); /* 退出临界区*/当系统退出临界区的时候,系统会计算当前是否有更高优先级的线程就绪,如果有比当前线程更高优先级的线程就绪,将切换到这个高优先级线程中执行;如果无更高优先级线原创 2021-08-17 12:38:43 · 4124 阅读 · 0 评论 -
快速排序qsort函数用法
一、qsort函数简介排序方法有很多种:选择排序,冒泡排序,归并排序,快速排序等。 看名字都知道快速排序是目前公认的一种比较好的排序算法。因为他速度很快,所以系统也在库里实现这个算法,便于我们的使用。 这就是qsort函数(全称quicksort)。它是ANSI C标准中提供的,其声明在stdlib.h文件中,是根据二分法写的,其时间复杂度为n*log(n)。功能: 使用快速排序例程进行排序头文件:stdlib.h用法:void qsort(void* base,size_t nu.原创 2021-08-17 11:10:47 · 1113 阅读 · 0 评论 -
norflash和nandflash;SRAM和SDRAM
一、常见存储类型典型应用 名称 描述 MCU片内flash norflash nor flash数据线和地址线分开,可以实现ram一样的随机寻址功能,可以读取任何一个字节。但是擦除仍要按块(页)擦除。 因为按照字节寻址,所以程序可以在nor flash中运行。嵌入式系统多用一个小容量的nor flash存储引导代码。 U盘 nandflash nand flash同样是按块擦除,但是数据线和地址线复用,不能利用地址线随机寻址。读取只能按原创 2021-08-04 00:01:24 · 793 阅读 · 1 评论 -
线程同步之事件集event
一、事件集一个事件集中包含 32 个事件(一个 32 bit 无符号整型数),特定线程只等待、接收它关注的事件。可以是一个线程等待多个事件的到来(线程 1、2 均等待多个事件,事件间可以使用 “与” 或者 “或” 逻辑触发线程),也可以是多个线程等待一个事件的到来(事件 25)。当有它们关注的事件发生时,线程将被唤醒并进行后续的处理动作。在 RT-Thread 实现中,每个线程都拥有一个事件信息标记,它有三个属性,分别是RT_EVENT_FLAG_AND( 逻 辑 与 ) , RT_EVENT_原创 2021-05-12 14:01:53 · 2437 阅读 · 0 评论 -
互斥量之:与信号量区别;死锁;优先级翻转;递归锁
一、互斥量(一)互斥量的定义互斥量的状态只有两种,开锁或闭锁(两种状态值)。当有线程持有它后,互斥量将处于闭锁状态,由这个线程获得它的所有权。相反,当这个线程释放它时,将对互斥量进行开锁,失去它的所有权。当一个线程持有互斥量时,其他线程将不能够对它进行开锁或持有它,持有该互斥量的线程也能够再次获得这个锁而不被挂起。(二)互斥量的使用场合互斥量的使用比较单一,因为它是信号量的一种,并且它是以锁的形式存在。在初始化的时候,互斥量永远都处于开锁的状态,而被线程持有的时候则立刻转为闭锁的状态。互原创 2021-05-11 17:04:35 · 1630 阅读 · 0 评论 -
信号量使用之:线程间同步与互斥,线程与中断同步,资源计数
生产者与消费者问题本质是:解决线程间互斥关系和同步关系问题由于缓冲区是临界资源,它一个时刻只允许一个生产者放入消息,或者一个消费者从中取出消息,所以需要解决互斥访问的问题。同时生产者和消费者又是一个相互协作的关系,生产者生产以后,消费者才能消费,因此又存在一个同步问题。为了解决上述既互斥又同步的问题,需要定义如下3 个信号量分:①lock:信号量锁的作用,因为 2 个线程都会对同一个数组 array 进行操作,所以该数组是一个共享资源,锁用来保护这个共享资源。②empty:空位个数,初原创 2021-05-10 17:58:36 · 1132 阅读 · 0 评论 -
RT-Thread临界段之rt_hw_interrupt_enable和rt_hw_interrupt_disable
一、PRIMASKPRIMSK=1 ;关闭中断PRIMSK=10;打开中断二、void rt_hw_interrupt_enable(rt_base_t level);有参数,无返回值该功能将设置指定的中断状态,该状态应由rt_hw_intterrupt_disable函数保存。 如果保存的中断状态是中断打开,该功能将打开系统中断状态。三、rt_base_trt_hw_interrupt_disable(void);有返回值,无参数此功能将返回当前系统中断状态并禁用系统中断。返回..原创 2021-05-07 18:34:38 · 5932 阅读 · 0 评论 -
Cortex-M MMU内存管理单元和 Linux
一、Cortex-M的定位二、内存管理单元内存管理单元简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。在多用户、多进程的操作系统中,MMU使得各个用户进程都有独立的地址空间。任何微控制器都存在一个程序能够产生的地址集和,被称为虚拟地址范围。以32位机为例,虚拟地址范围0~0xFFFFFFFF (4G)。当该控制器寻址一个256M的内存...原创 2018-12-27 15:47:07 · 2683 阅读 · 1 评论