- 博客(24)
- 收藏
- 关注
原创 Nordic的NordicSemiconductor.nRF_DeviceFamilyPack PACK包下载路径
内含pack包的所有版本。
2024-01-18 20:40:54
593
2
原创 FreeRTOS--中断管理
异常是指任何打断处理器正常执行,并且迫使处理器进入一个由有特权的特殊指令执行的事件。内部事件(像处理器指令运行产生的事件)引起的异常称为同步异常。异步异常主要是指由于外部异常源产生的异常,是一个由外部硬件装置产生的事件引起的异步异常。
2023-02-21 17:06:13
1756
原创 FreeRTOS--内存管理
内存管理的主要工作是动态划分并管理用户分配好的内存区间,主要是在用户需要使用大小不等的内存块的场景中使用,当用户需要分配内存时,可以通过操作系统的内存申请函数索取指定大小内存块,一旦使用完毕,通过动态内存释放函数归还所占用内存,使之可以重复使用(heap_1.c 的内存管理除外)。,Heap_2.c 方案支持释放申请的内存,但是它不能把相邻的两个小的内存块合成一个大的内存块,对于每次申请内存大小都比较固定的,这个方式是没有问题的,而对于每次申请并不是固定内存大小的则。
2023-02-20 20:50:30
553
原创 FreeRTOS--任务通知
任务通知是属于任务中附带的资源,所以在任务被创建的时候,任务通知也被初始化的,而在分析队列和信号量的章节中,我们知道在使用队列、信号量前,必须先创建队列和信号量,目的是为了创建队列数据结构。任务通知,由于任务通知的数据结构包含在任务控制块中,只要任务存在,任务通知数据结构就已经创建完毕,可以直接使用。任务通知可以在任务中向指定任务发送通知,也可以在中断中向指定任务发送通知FreeRTOS 的每个任务都有一个 32 位的通知值,任务控制块中的成员变量 ulNotifiedValue就是这个通知值。
2023-02-19 17:45:41
1100
原创 FreeRTOS--软件定时器
一般系统利用 SysTick 作为软件定时器的基础时钟,软件定时器的回调函数类似硬件的中断服务函数,所以,回调函数也要快进快出,而且回调函数中不能有任何阻塞任务运行的情况(软件定时器回调函数的上下文环境是任务),比如 vTaskDelay()以及 其它能阻 塞任务运 行的函数 ,两次触发 回调函数 的时间间隔 xTimerPeriodInTicks 叫定时器的定时周期。xTimerDelete()用于删除一个已经被创建成功的软件定时器,删除之后就无法使用该定时器,并且定时器相应的资源也会被系统回收释放。
2023-02-18 18:00:19
1078
原创 FreeRTOS--事件
可以实现一对多 多对多的同步 一个任务可以等待多个事件发生 可以是任何一个事件发生时唤醒任务进行事件处理 也可以是几个事件都发生后才唤醒任务进行事件处理。通过这个函数任务可以知道事件标志组中的哪些位,有什么事件发生了,然后通过 “逻辑与”、“逻辑或”等操作对感兴趣的事件进行获取,并且这个。事件“逻辑与”则被称为是关联型同步,指的是任务感兴趣的若干事件都发生时才被唤醒,并且事件发生的时间可以不同步。当任务等待事件同步时,可以通过任务感兴趣的事件位和事件信息标记来判断当前接收的事件是否。
2023-02-17 16:38:26
1389
原创 FreeRTOS-互斥信号量
某个临界资源受到一个互斥量保护,如果这个资源正在被一个低优先级任务使用, 那么此时的互斥量是闭锁状态,也代表了没有任务能申请到这个互斥量,如果此时一个高 优先级任务想要对这个资源进行访问,去申请这个互斥量,那么高优先级任务会因为申请 不到互斥量而进入阻塞态,那么系统会将现在持有该互斥量的任务的优先级临时提升到与高优先级任务的优先级相同,这个优先级提升的过程叫做优先级继承。当互斥量被任务持有时,该互斥量处于闭锁状态,这个任务获得该互斥量的所有权。当任务释放这个互斥量时,任务失去该互斥量的所有权。
2023-02-14 15:03:00
393
原创 stm32 L152 段式LCD显示实时时间
下面就是从RTC的TR寄存器中取实时时间 读取出来 取到时分秒的每一位 其中时分秒都被分成两部分 高位和低位 依次去分钟的低位 分钟的高位 小时的低位 小时的高位 显示出来 就可以啦。首先要给段式LCD要显示的数据进行编码 具体编码根据使用的LCD不同而有所不同。因为本文要显示时间 所以编了所有数字的编码(本文用的LCD是收音机专用LCD)编码完成后 要用数组将所有的编码集中起来 方便后面从数组中取到想要用的数字。在RTC中断中 调用显示时间的函数即可。配置完成这两个后直接生成代码。
2023-02-08 15:45:10
1415
1
原创 LCD显示中英文
如何制作字模:为了方便使用,需要制作所有常用的字符的字模 如果程序只需要显示英文 那就制作包含ASCLL码表中所有字符的字模 如果程序只需要显示一些常用的汉字 可以选择制作GB2312编码中所有的字模 而且希望字模数据和字符编码有固定的映射关系 以便我们在程序中使用字符编码作为索引 查找字模。由于计算机只能识别0和1,文字也只能以0和1的形式存在在计算机中 所以需要对文字进行编码才能让计算机处理 编码的过程是规定特定的01数字串来表示特定的文字 最简单的字符编码例子是ASCLL码。
2023-02-02 16:41:07
442
原创 FreeRTOS--信号量
信号量是一种实现任务间通信的机制,可以实现任务之间同步或者临界资源的互斥访问,常用于协助一组相互竞争的任务来访问临界资源。信号量是一个非负整数,所以获取它的任务都会将整数减一,当该整数值为零时,所有试图获取他的任务都将处于阻塞态,通常一个信号量的计数值用于对应有效的资源数,表示剩下的可被占用的互斥资源数0:表示没有积累下来的释放信号量的操作,且有可能有在此信号量上阻塞的任务正值:表示有一个或者多个释放信号量的操作。 二值信号量既可以用于临界资源访问也可以用于同步功能。二值信号量和互斥信号量非常相似,但是
2022-12-03 15:50:35
2478
2
原创 FreeRTOS--消息队列
队列又称为消息队列,是一种用于任务间通信的数据结构,是一种异步通信方式,实现接收来自其他任务或者中断的不固定长度的消息,任务能够从队列中读取消息,当队列中消息是空的时,读取消息的任务被阻塞,用户可以指定阻塞任务的时间xTickToWait,当队列中有新消息,被阻塞的任务会被唤醒并处理消息。在中断服务程序或者任务中都可以给消息队列发送消息,如果队列未满,会将消息拷贝到消息队列的队尾,当发送紧急消息时,发送的位置时消息队列的对头而不是队尾,接受者就可以优先接收到紧急信息,从而即使进行消息处理。
2022-12-02 22:33:24
2588
原创 FreeRTOS—任务管理
每个FreeRTOS任务都有自己的栈空间,当任务切换时,他的执行环境会被保存在该任务的栈空间中,当这个任务再次运行时,直接从堆栈中正确恢复上下次的运行环境,任务越多,需要的堆栈空间越大,系统能运行多少个任务取决于系统可用的SRAM。就绪态,阻塞态,运行态->挂起态:任务可以通过vTaskSuspend()API函数将处于任何状态的任务挂起,被挂起的任务得不到CPU的使用权,也不会参与调度,除非把他从挂起态中解除。任务设计的几点因素:任务运行的上下文环境,任务执行的时间合理设计。
2022-12-01 17:07:07
546
原创 FreeRTOS的启动流程
在创建任务时,我们需要开启调度器,因为创建任务是把任务添加到系统中,还没真正调度 并且空闲任务(FreeRTOS一旦启动就必须要保证系统中每时每科都有任务执行 并且空闲任务不能被挂起与删除 并且空闲任务的优先级是最低的 以便系统中其他任务能够随时抢占空闲任务的CPU使用权)也没实现 定时器任务也没实现 这些都是在开启任务调度函数vTaskStartSchedule中实现 处理完这些 系统才真正才是启动。在main函数中只需要创建并启动一些任务和硬件初始化。其中Ret_Handle函数的内容。
2022-11-30 22:10:48
1966
原创 FreeRTOS创建动态任务(SRAM动态内存)
/系统所有堆得大小{}else{}其中堆内存的大小为 configTOTAL_HEAP_SIZE ,定义的堆得大小不能超过内部SRAM的总大小。如果是第一次会调用malloc需要将堆栈初始化,设置空闲块列表 方便以后分配内存,初始化完成后会取得堆的地址。LED1_OFF;}}任务必须是一个死循环,我们的AppTaskCreate任务执行一次后就进行删除,不影响系统的运行,所以只执行一次的任务在执行完毕时要记得及时删除。
2022-11-26 22:09:22
691
原创 差分放大电路及动态分析
甲类:360度导电 甲类功放:不说话时也耗电 不说话时不耗电:将静态工作点降低。加一个镜像的电路可以让两边一起浮动 但是两个Re可以共用一个 于是改成下面的 形式。Re电阻现在的作用变成了原来的两倍 可以将Vbb共用一个。在共模信号的作用下 Re电阻相当于两倍的作用 大大抑制了干扰。在差模信号的作用下 Re电阻相当于消失 进行有效的放大。U0也有两部分:共摸引起的 U0c 差模引起的U0d。对电路中的共模信号和差模信号进行分析。Re电阻过大的时候 VEE就要变大。
2022-11-25 21:31:36
2967
原创 多级放大电路的构成与动态分析
T2的基极为0.7 T1的集电极为0.7 T1容易饱和 要提高T1的集电极电位。缺点:调试困难 如果第一个静态工作点发生了漂移 第二个会将这种漂移放大。不能直接将一级电路直接拉出来算 要看前后的联系。优点:静态工作点调试简单 稳定Q点容易。缺点:F低的时候放大效果不好 不易于集成。将放大电路的每一极拆开看 求出Au。耦合方式:直接耦合(模块化看图)优点:低频特性好 易于集成。
2022-11-24 22:34:14
228
原创 其他CMOS电路(数字电路)
如果输入有如图的变化 那么输出一定会有缓慢的变化 缓慢的原因是因为:前端变化了 CL上面的电压由于电容的存在不能突变 如果原来CL上为低电平 想变为高电平 此时管子已经导通 应该上拉 但是由于电容的存在CL想呈现出高电平 必须要充电 在充电的过程中 电流流过管子的内阻形成的功耗为必然要消耗掉的。如果两个管子断开 会呈现高阻态(高阻态是指虽然在物理连接上是连在一起的但是对外呈现出一种断开的状态)如果两个管子都导通 会出现不高不低的中间电平:一定要避免(在稳定状态时)
2022-11-22 22:44:10
138
原创 FreeRTOS 创建任务
任务是死循环,但是使用AppTaskCreat任务,执行一次后就进行删除,不影响系统运行。任务中的延时函数必须是FreeRTOS中的延时函数,FreeRTOS 的延时函数会阻塞任务,调度器回切换其他任务,从而实现多任务。内核对象句柄:信号量,消息队列,事件标志组这些都属于内核的对象,要想使用这些内核对象,首先要创建,创建成功后会返回一个响应的句柄,实际上是一个指针,我们后续可以通过这个句柄才操作内核对象。
2022-11-21 17:56:06
1156
原创 基本共射放大电路的动态分析以及放大电路Q点的稳定
稳定Q点的思路:稳定IC的变化,找出一个值温度上升时使得IC下降 Ib会引起Ic的变化 Ib又是Ube引起的。动态的Ib产生动态的Ic,动态的Ic产生动态的输出和上面接多大的Rc相关,接了负载之后Rl也对输出有影响。在放大过程中:动态的Ube秉承动态的Ib时与Rbe相关,放大性能和Rbe相关。对Q点有影响的因素:温度,电源的波动 ,元器件的老化 是的Q点移动。输入电阻不一样 相同的放大电路得到的输出也不一样。Rc越小前端的信号越近似于电压源 越能稳定输出电压。从电路结构上控制温度的影响。
2022-11-20 18:13:53
1863
原创 STM32 内部电压采集 基于LL库实现
2.在LL库的文档中看到 内部通道的采集 需要通过一个特殊的函数进行设置。4.在主函数调用 在debug模式下 可以在watch窗口中看到值。3.在keil中编写相关函数 编写获取电压值的函数 单位为mv。1.首先对STMcubeMX进行设置 设置略 同上篇。
2022-10-14 10:54:38
421
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人