日韩在线不卡免费视频一区,日韩欧美精品一区二区三区经典,日产精品码2码三码四码区,人妻无码一区二区三区免费,日本feerbbwdh少妇丰满

王超的小站
認(rèn)證:VIP會員
所在專題目錄 查看專題
FreeRTOS移植詳解1-專題概覽(基于Microchip dsPIC33C系列芯片)
FreeRTOS移植詳解2-滴答定時器實現(xiàn)(基于Microchip dsPIC33C系列芯片)
FreeRTOS移植詳解3-內(nèi)核裁剪(基于Microchip dsPIC33C系列芯片)
FreeRTOS移植詳解4-中斷配置(基于Microchip dsPIC33C系列芯片)
FreeRTOS移植詳解5-臨界段處理(基于Microchip dsPIC33C系列芯片)
FreeRTOS移植詳解6-任務(wù)堆棧初始化和啟動(基于Microchip dsPIC33C系列芯片)
作者動態(tài) 更多
PIC24 & dsPIC33 MCU Bootloader開發(fā)
2021-11-08 15:12
PIC16 & PIC18 MCU Bootloader開發(fā)
2021-11-08 15:00
Python開發(fā)環(huán)境搭建(for Bootloader)
2021-11-08 14:58
Python開發(fā)環(huán)境搭建 (for Control)
2021-01-27 18:43
MCU擴(kuò)展CAN/CAN FD接口方案-MCU軟件動手實驗
2020-11-25 14:11

FreeRTOS移植詳解2-滴答定時器實現(xiàn)(基于Microchip dsPIC33C系列芯片)

      在介紹內(nèi)核裁剪之前,首先介紹一下滴答定時器的實現(xiàn),為什么把它放在靠前的位置呢,因為這個東西相對于RTOS來說就像我們?nèi)祟惖男呐K,是RTOS活著的基礎(chǔ)。那么心跳如何實現(xiàn)呢,對于基于ARM架構(gòu)的芯片(如ATSAMD21或ATSAMD51)通常用24位的SysTick定時器來實現(xiàn),也就是大家常說的系統(tǒng)滴答定時器,通過該定時器為系統(tǒng)提供一個周期性的定時信號,該定時信號就是RTOS的心跳信號,通常也稱為時鐘節(jié)拍或系統(tǒng)節(jié)拍。對于dsPIC33C系列芯片,則可以用通用定時器Timer1(Datasheet中其框圖如下圖,紅色字體為項目工程中的實際配置情況)來實現(xiàn),每個Timer1時鐘節(jié)拍中斷都會觸發(fā)OS內(nèi)核執(zhí)行一些系統(tǒng)調(diào)用,比如進(jìn)行任務(wù)管理和任務(wù)切換等。 

      下面結(jié)合上面Timer1的框圖一起來看下Timer1的初始化代碼實現(xiàn),該段代碼在項目目錄“./src/third_party/rtos/FreeRTOS/portable/MPLAB/PIC24_dsPIC”下port.c中實現(xiàn),詳見函數(shù)vApplicationSetupTickTimerInterrupt(),具體細(xì)節(jié)如下:

      上圖紅色字體中前3項配置將在下一節(jié)內(nèi)核裁剪中進(jìn)行說明,這里需要知道以上TIMER1初始化代碼的意思就是Timer1定時器要100us中斷一次,且其中斷優(yōu)先級設(shè)置為最低優(yōu)先級。那么Timer1的中斷函數(shù)里做什么事情呢,代碼實現(xiàn)同樣在port.c中。

      其大概意思就是通過xTaskIncrementTick()函數(shù)進(jìn)行任務(wù)管理,如果當(dāng)前任務(wù)的優(yōu)先級有多個任務(wù)(同時configUSE_PREEMPTION和configUSE_TIME_SLICING配置為1,即 使能了時間片調(diào)度  ),那么就需要通過portYIELD()函數(shù)進(jìn)行一次任務(wù)切換。portYIELD()函數(shù)是針對不同MCU移植FreeRTOS的重中之重,在后續(xù)任務(wù)切換部分進(jìn)行詳細(xì)介紹。

聲明:本內(nèi)容為作者獨立觀點,不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯的朋友,別忘了一鍵三連哦!
贊 6
收藏 6
關(guān)注 43
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧