- 博客(18)
- 收藏
- 关注
原创 S32K146功耗模式管理
HSRUN:High Speed Run,高速运行模式,我们知道S32K144最大主频为112MHz,指的是在HSRUN模式下可达112MHz,而不是在RUN模式下。VLPR:Very Low Power Run,极低功耗的运行模式,该模式下单片机仍在运行只是以极低的功耗在运行,即4MHz。STOP:STOP模式即睡眠或停止模式,该模式下内核时钟关闭,同时该模式下分为STOP1和STOP2两种模式具体区别如下表。RUN:正常运行模式为芯片的默认模式,最大主频80MHz。
2024-08-23 17:05:09 312
原创 RTOS列表
用来跟踪RTOS中的任务,对就绪挂起阻塞列表进行排序存储。列表插入insert插入依据value值大小。insertend插入依据列表当前指向列表项。列表插入需要两个参数,列表参数,列表项参数。数据结构:由结构体构成的双向链表。2.列表遍历列表项指针。1.列表项用于排序的值。4.列表项属于哪个任务。1.列表中列表项个数。
2024-05-15 12:04:20 143 1
原创 freertos低功耗模式
实现原理:降低CPU时钟频率,改变滴答定时器时钟周期,软件获取下一次阻塞事件,赋值给滴答定时器,保证滴答定时器不会过早打断休眠。代码里还可以设置,休眠时间大于多少进行休眠,如果休眠时间小了效果可能还不如不休眠。freertos采用睡眠模式,可以通过中断及事件唤醒。CPU在未执行指令时,如果开启时钟就会有能量消耗。后面两种直接关闭振荡器。
2024-05-12 10:41:11 208
原创 freertos临界区以及任务调度器的打开和关闭
uxSchedulerSuspended变量控制pendsv对应中断控制位,通过该变量控制pendsv不进行中断,转而实现挂起调度器。总结:进入临界区关中断,关闭调度器,只是对pendsv的中断控制位进行控制,对滴答记时器的影响,通过恢复的时候补偿,不影响别的中断。上面四个挂起均是操作basepri寄存器。
2024-05-09 16:52:02 390
原创 freertos函数介绍任务挂起恢复阻塞
当任务处于等待或者依赖别的事件时,系统会将该任务置于阻塞状态,如vTaskDelay()时,再就是任务通过阻塞来等待队列、信号量、事件组、通知或信号量 事件,阻塞一般会有阻塞时间。将任务处于暂停状态,若不进行恢复,将一直无法进入运行状态。pxTaskToSuspend:挂起任务的任务句柄。1.参数需要操作的任务的任务句柄。2.挂起状态切换到就绪状态。2.将任务置于阻塞状态。
2024-05-09 13:17:43 176
原创 freertos函数介绍任务创建
3.任务栈的大小,单位为字,32位处理器,一个字为四个字节。4.pvParameters 传进任务的参数。4.pvParameters 传进任务的参数。4.任务句柄可以更改任务优先级以及删除任务。3.usStackDepth任务栈的大小。1.pvTaskCode任务函数的地址。1.pvTaskCode任务函数的地址。5.uxPriority任务优先级。1.传进任务的参数为void。1.传进任务的参数为void。2.pcName任务的别名。2.pcName任务的别名。2.返回值为创建的任务句柄。
2024-05-09 12:14:56 229
原创 freertos任务调度相关中断
PendSV:PendSV 异常用于任务切换。为了保证操作系统的实时性,除了使用 Systick 的时间片调度,还得加入 PendSV 异常加入。Systick:相同优先级的任务,每隔一个 Systick,运行过的任务被自动排放至该优先级链表的尾部(Freertos任务调度PendSV,Systick,SVC。SVC:FreeRTOS 中 SVC 只在初始时使用了一次。
2024-04-26 23:32:22 276 2
原创 stm32系统滴答寄存器
1.滴答定时器有对应中断SysTick_Handler。控制状态寄存器CTRL。重装载寄存器LOAD。当前数值寄存器VAL。
2024-04-26 17:57:19 152 1
原创 freertos临界区
1.临界区,就是在执行的时候,不希望其他程序打断,临界区并不是完全避免打断,临界能力取决于控制中断的寄存器值的配置。2.其他程序:中断或者任务,freertos任务也是通过低优先级中断实现。封装好的,低优先级低于5的可屏蔽寄存器。clear清除屏蔽寄存器结合下面的看。自己设置屏蔽优先级范围。
2024-04-24 22:02:55 356
原创 freertos删除任务
2.如果其他任务中删除需要删除的任务,需要使用被删除句柄的指针,删除后不会对该指针赋值为NULL,所以为了防止重复删除造成程序跑飞,可以先判断是否为NULL,条件成立执行删除,然后赋值为NULL。1.如果想删除自己,那么删除的参数需要是NULL,创建的时候可以使用NULL,或者先将句柄赋值为NULL。2.通过创建任务时使用TaskHandle_t,其他任务使用handle实现。1.可以在任务内通过vTaskDelete( NULL );
2024-04-24 20:43:12 246
原创 初识freertos
1.裸机开发轮询代码,只能一个执行完才能执行下一个,断断续续,而RTOS针对多个任务可以实现共同执行。2.裸机开发,针对高优先级中断,哪怕里面有等待,也要执行完才能执行低优先级事情,浪费CPU资源。总结:避免任务多时,出现断断续续的效果。总结:避免空闲等待,提高CPU工作效率。
2024-04-16 23:10:18 144
原创 STM32F407中断
位置:SCB挂载在SCS上寄存器:1.SCB->AIRCR:配置优先级分组总结:设置所有中断,抢占优先级位数以及响应优先级位数位置:NVIC挂载在SCS上寄存器:1.NVIC->ISER[8]:中断使能设置寄存器,每位代表中断2.NVIC->ICER[8]:中断清除使能寄存器3.NVIC->ISPR[8]:中断挂起设置寄存器4.NVIC->ICPR[8]:中断清除挂起寄存器5.NVIC->IABR[8]:中断激活状态位寄存器。
2024-04-14 10:15:25 1804
原创 STM32F407系统时钟
1.四个时钟源,低速高速,内部外部,两两组合总共四个2.LSI内部32kHz,HSI内部16MHz,LSE外部32.768kHz,HSE外部4-26MHz3.外部时钟IN引脚输入波形,OUT引脚高阻态4.四个时钟源本身都可以通过寄存器控制打开或关闭1.RCC_CR时钟控制寄存器:HSI,HSE,PLL,PLLI2S使能以及是否ready,高速时钟校准微调(源的开关)2.RCC_PLLCFGR为PLL配置:选择使用HSI还是HSE作为时钟源,以及P,N,M,Q(源的选择及控制)
2024-04-08 14:22:04 1879
原创 STM32F407gpio
输入模式1.四种输入模式,模拟输入;上拉输入;下拉输入;浮空输入2.模拟信号输入包含模拟输入,剩下三种输入方式均为数字输入3.三种数字信号输入区别为,I/O口悬空状态下,输入端电平为高或低或不确定4.输入为数字信号原理,芯片内部集成有施密特触发器,当外部输入高于阈值为逻辑1,低于阈值为逻辑0输出模式1.四种模式,开漏输出,推挽输出,复用开漏输出,复用推挽输出2.推挽输出,P-mos和N-mos只能有一个导通,另外一个截止,对应高低电平。
2024-04-04 20:36:52 2198
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人