原创 FreeRTOS原理剖析:任務延時

1. 任務延時相關API函數 函數 描述 vTaskDelay() 任務相對延時 vTaskDelayUntil() 任務絕對延時,相對於任務相對延時而言,即以一定的週期執行任務函數 xTaskAbortDe

原创 Linux字符時設備驅動 中斷處理 按鍵

1. Linux異常處理體系結構 Linux異常處理體系結構使用主要分成兩步: 1、使用函數init_IRQ()初始化中斷體系結構,源代碼在arch/arm/kernel/irq.c中。 2、用戶使用函數request_irq()

原创 FreeRTOS原理剖析:任務的創建

1. 任務創建API函數 任務的最基本功能是任務管理,任務管理中最基本操作是任務的創建和刪除。對於任務的創建和刪除,由於篇幅有點長,分兩篇分別講解。在FreeRTOS中任務的創建函數如下: 函數 描述 xTaskCr

原创 FreeRTOS原理剖析:系統節拍時鐘分析

1. 系統節拍時鐘相關的API函數 函數 描述 SysTick_Handler() 系統節拍中斷服務函數,即SysTick定時器中斷函數 xPortSysTickHandler() 調用函數xTaskIncrem

原创 FreeRTOS原理剖析:任務掛起和恢復

1. 任務掛起和恢復相關API函數 函數 描述 vTaskSuspend() 掛起一個任務,使任務處於掛起態 vTaskSuspendAll() 調度鎖關閉函數,即禁止調度器調用,相當於將所有的任務掛起 vT

原创 FreeRTOS原理剖析:空閒任務分析

1. 空閒任務相關API函數 函數 描述 portTASK_FUNCTION() 宏定義,真正函數原型爲void prvIdleTask(void * pvParameters) 任務掛起中其它重要的API函數(

原创 FreeRTOS原理剖析:任務刪除

1. 任務刪除API函數 FreeRTOS中任務刪除的相關API函數如下: 函數 描述 vTaskDelete() 刪除一個任務 其它內部調用函數: 函數 描述 prvGetTCBFromHandl

原创 FreeRTOS原理剖析:任務的基礎知識

1. 任務的基礎知識 1.1 前後臺和多任務系統 在裸機程序中,一般方式是在main()函數的while(1)中循環執行所有的程序,有時,使用中斷去執行一些緊急的功能,中斷中執行的程序稱爲前臺,main()函數中執行的程序稱爲後

原创 FreeRTOS原理剖析:中斷管理和臨界區

1. 中斷的基本概念 1.1 異常類型 Cortex-M處理器中異常編號爲1~15爲系統異常,編號爲16及以上爲外部中斷異常,可由片上外設或者外設中斷源產生。其中復位、NMI、HardFault異常的優先級固定不變,其它異常可編程

原创 FreeRTOS原理剖析:列表和列表項

1. 列表和列表項概念 1.1 對C語言中鏈表的簡介 在FreeRTOS中,列表和列表項是非常重要的數據結構,它跟C語言中的鏈表很相似。在C語言中,鏈表包括單鏈表、單循環鏈表、雙向循環鏈表,如下: 在FreeRTOS

原创 linux字符設備驅動 LED驅動程序

1. 字符設備驅動簡介 Linux的外設主要分爲三類:字符設備(character device)、塊設備(block device)、網絡接口(network interface)。 字符設備是能像字節流一樣讀寫操作的設備,也就

原创 FreeRTOS原理剖析:任務切換過程

1. 任務切換相關API函數 函數 描述 xPortPendSVHandler() PendSV中斷服務函數,其實函數原型爲PendSV_Handler() vTaskSwitchContext() 檢查任務堆棧

原创 FreeRTOS原理剖析:任務調度器啓動

1. 任務調度器啓動相關API函數 函數 描述 vTaskStartScheduler() 開啓任務調度器 任務調度啓動中其它重要的API函數(介紹過的函數不列出,請參考前面的文章): 函數 描述

原创 FreeRTOS原理剖析:事件標誌組

1. 事件標誌組相關API函數 函數 描述 xEventGroupCreate() 使用動態方式創建事件標誌組 xEventGroupCreateStatic() 使用靜態方式創建事件標誌組 vEventGr