
STM32单片机
文章平均质量分 80
王者时代
浙江大学在读研究生,电子信息,毫米波雷达,嵌入式软硬件,labview,matlab,freertos,stm32/gd32/esp8266/esp32
展开
-
C语言编程规范:常见注意事项
C语言编程规范:常见注意事项原创 2024-08-14 14:14:58 · 508 阅读 · 0 评论 -
FreeRtos入门-10 裸机程序的不足
缺点,如果do_something_for_xxx执行过长,也会影响其他do_something_1运行。执行时间很短,不超过1个tick时,效果很好。缺点:任务1和任务2之间的互相影响。执行时间很短,上述代码很适合。在中断中提供个标志位,快进快出。原创 2024-04-09 23:24:08 · 240 阅读 · 0 评论 -
FreeRtos入门-9 统计任务信息
2)#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS TimerInit 被定义为TimerInit();2,栈使用情况:由于创建任务时候,栈固定的填充了0xa5,以后可以通过使用下面函数查看栈的高水位,也就是剩余栈空间。3,任务运行时间统计:需要比tick更快的始终,比如tick周期1ms,选择0.1ms的定时器。在portGET_RUN_TIME_COUNTER_VALUE=》1,目的:可以通过查看任务的CPU情况、使用栈情况,进行针对优化。原创 2024-04-08 23:33:36 · 741 阅读 · 0 评论 -
FreeRtos入门-8 调试
在FreeRTOS里,使用。原创 2024-04-07 23:20:29 · 1021 阅读 · 0 评论 -
FreeRtos入门-8 资源管理
资源管理主要涉及到对共享资源的有效和安全的访问控制,共享资源可以是内存、I/O设备、缓冲区等,需要在多个任务或中断服务程序中共享。在FreeRTOS中,临界资源是指在访问共享资源时需要保持原子性的部分,即必须完整运行、不能被打断的代码段。这些资源在某一时刻只能由一个进程或线程进行访问,以避免数据损坏或不一致的情况。当多个线程需要同时访问同一个共享资源时,如果不加以限制,就可能出现数据冲突或不一致的情况。因此,FreeRTOS通过一系列机制,如临界区、关中断等,原创 2024-04-06 19:56:35 · 793 阅读 · 0 评论 -
FreeRtos入门-7 中断管理
pxHigherPriorityTaskWoken 等于 pdTRUE:函数的操作导致更高优先级的任务就绪了,ISR 应该进行任务切换。这些带ISR后缀的函数,不会发起调度,会唤醒任务,但不会引起调度,会在xHigherPriorityTaskWoken记录是否需要调度。3,通过配置中断的优先级,可以确保高优先级的中断能够立即响应,而低优先级的中断则可以在需要时等待。使用同一套函数的话,需要增加额外的判断代码、增加额外的分支,是的。在任务、ISR 中调用时,需要的参数不一样,原创 2024-04-06 19:10:03 · 873 阅读 · 0 评论 -
FreeRtos入门-6 定时器
因此,对于按键中断和定时器中断,它们的优先级都是相对于其他中断而言的,而不是相对于任务的。这意味着,当一个中断发生时,即使当前正在执行的任务优先级非常高,CPU也会立即停止当前任务的执行,转而处理中断服务程序。2,当按键按下后,进入回调回调函数判断发生的GPIO,将对应的time[n] = 当前tick+20,即20ms之后的tick值算出来。1,定时器回调函数受守护任务管理,在freertos文件中,要使能定时器,指定守护任务的优先级、长度、深度。//按键按下复位定时器,复位相当于启动。原创 2024-04-06 14:02:09 · 1153 阅读 · 0 评论 -
FreeRtos入门-5 任务通知
在FreeRTOS中,任务通知、队列、信号量和事件组都是用于任务间通信和同步的机制,但它们各自具有不同的特性和适用场景。任务通知的主要优势在于其高效性和明确性。使用任务通知发送事件或数据给某个任务时,效率更高,且可以明确指定通知哪个任务。此外,任务通知还更节省内存,因为使用它无需额外创建结构体。然而,任务通知的限制在于它不能向中断服务程序(ISR)发送数据,因为ISR并没有任务结构体。同时,任务通知发送的数据只能由指定的任务独享。原创 2024-04-05 22:54:19 · 683 阅读 · 0 评论 -
FreeRtos入门-4 事件组与同步点
事件组同步点创建//1,创建事件组设置//设置事件组bit0 位等待//xclearonexit:退出是否清除。xwaitforallbits:是否等待所有的事件位有数据总结1,事件组解决多个生产者,都在产生数据时,各自往对应的bit位给状态通知。2,消费者等待不同的bit未是否完成,可以是等待所有位也可以只等待其中一个完成。3,事件组只能传递完成状态,而不能传递数据,传递数据还要通过队列方式1,同步点,创建同事件组。原创 2024-04-04 21:02:37 · 510 阅读 · 0 评论 -
FreeRtos入门-3 信号量(计数值、二进制、互斥量、递归锁)
1,信号量与队列的区别,队列可以在不同任务中传递信息,既可以把生产者的数据和生产者的状态告知给其他的任务。而信号量只能传递不同任务的完成状态,无法传递数据。2,涉及信号量(semaphore)的类型有:计数值(counting)、二进制(Binary)、互斥量(mutex)、递归锁(recursive)二进制是特殊的计数值,计数最大值为1二进制的缺陷1,存在优先级反转二进制的缺陷2,存在别被人解锁风险针对二进制的缺陷1,使用互斥量,通过优先级继承解决优先级反转问题。原创 2024-04-04 19:41:06 · 708 阅读 · 0 评论 -
【STM32单片机入门-1】堆栈/全局变量,局部变量,静态全局变量,局部静态变量等
分配内存是分配在栈存储区上的,其作用域也只是在局部函数内,在定义该变量的函数内,只要出了该函数,该局部变量就不再起作用,该变量的生命周期也只是和该函数同在。分配的内存也是在静态存储内存上的,其第一次初始化后就一直存在直到程序结束,该变量的特点是其作用域只在定义它的函数内可见,出了该函数就不可见了。全局静态变量 (static):分配的内存与全局变量一样,也是在静态存储内存上,其生命周期也是与整个程序同在的,从程序开始到结束一直起作用,首先,我们逐一回答您的问题。分配的,所以它们指向的地址是在堆空间中的。原创 2023-12-21 13:03:34 · 6013 阅读 · 0 评论