性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

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

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

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

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

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

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

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