上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 107 下一页
摘要: STM32在使用时有时需要禁用全局中断,比如MCU在升级过程中需禁用外部中断,防止升级过程中外部中断触发导致升级失败。ARM MDK中提供了如下两个接口来禁用和开启总中断:__disable_irq(); // 关闭总中断__enable_irq(); // 开启总中断 但测试发现这样一个问题,在关 阅读全文
posted @ 2023-10-10 20:28 流水灯 阅读(1434) 评论(0) 推荐(0)
摘要: 临界区 FreeRTOS: 非中断的临界区,根据优先级关中断,不会把所有中断都关了;使用了一个变量记录进临界区的次数,保证嵌套不出问题 void vPortEnterCritical( void ) // 进入临界区 { portDISABLE_INTERRUPTS(); uxCriticalNes 阅读全文
posted @ 2023-10-10 17:14 流水灯 阅读(2692) 评论(0) 推荐(0)
摘要: 明确问题 首先,让我们明确一下问题。 对于这个问题,稍微准确一点的问法是:为什么在 Linux 的中断里,不能 sleep? 但是这个问法仍然不准确。 中断 (interrupt) 和中断服务程序 (interrupt service routine, ISR,或者是 interrupt handl 阅读全文
posted @ 2023-10-06 16:56 流水灯 阅读(523) 评论(0) 推荐(0)
摘要: request_threaded_irq() 阅读全文
posted @ 2023-10-05 16:11 流水灯 阅读(33) 评论(0) 推荐(0)
摘要: wait_var_event 等待 condition 为1,否则阻塞 阅读全文
posted @ 2023-10-05 13:50 流水灯 阅读(36) 评论(0) 推荐(0)
摘要: ARM芯片有硬件中断号,比如0~15是SGI中断 linux内核规定了软件中断号及软件中断号的功能;不直接使用ARM芯片的硬件中断号是因为linux内核是适配多架构操作系统,比如有些芯片硬件中断号20是GPIO中断,有些芯片是25;linux统一规定了某个中断号对应GPIO中断。这样就存在硬件中断号 阅读全文
posted @ 2023-10-05 00:27 流水灯 阅读(136) 评论(0) 推荐(0)
摘要: 构成cpu的主要部件包括运算器、控制器、寄存器三个部件。 完整的CPU构架: ALU只负责计算,它的数可以从寄存器来,也可以从片外存储器来;数从哪儿来,做什么运算,是由指令解析产生的,逻辑控制单元来控制;逻辑控制单元的指令是在PC指针寄存器的指引下,从程序的地址空间拿进来逐条解析;在这些过程中如果P 阅读全文
posted @ 2023-10-04 15:39 流水灯 阅读(182) 评论(0) 推荐(0)
摘要: FreeRTOS一共提供了5种申请内存的方案 heap1 只申请不释放,内存利用率最高。申请出来的内存块,没有内存块头记录这个内存的大小,所以也无法释放,也正是没有内存块头,内存利用率高 使用场景:不需要频繁申请内存 heap2 能申请能释放,不能合并内存块。每个内存块都有一个内存块头,有一个链表管 阅读全文
posted @ 2023-10-04 14:09 流水灯 阅读(259) 评论(0) 推荐(0)
摘要: 简介 有一个定时器任务,任务内读队列。启动定时器,会向队列发送消息,定时器任务读到消息后把定时器回调函数等信息作为一个链表项插入链表。当链表有链表项,算出还剩多长时间执行定时器回调函数,这个时间作为定时器任务阻塞时间。所以定时器任务重新运行要么是时间到准备运行定时器回调函数,要么是队列接收到消息。 阅读全文
posted @ 2023-10-03 21:27 流水灯 阅读(455) 评论(0) 推荐(0)
摘要: 简介 任务通知核心包含是一个32位的无符号整数和一个8位的通知状态,这两个在任务控制块中,通知任务就是一个任务或者中断改写另外一个任务中的32位的无符号整数,改写这个整数的方式可以有所不同 可以让这个整数加1,模拟信号量 设置该整数的指定的某些位,模拟事件组 直接选择覆盖或者不覆盖写入,模拟消息队列 阅读全文
posted @ 2023-10-03 17:29 流水灯 阅读(221) 评论(0) 推荐(0)
上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 107 下一页