日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32开发项目:定时器预装载寄存器(ARR)

發(fā)布時(shí)間:2024/3/7 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32开发项目:定时器预装载寄存器(ARR) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

項(xiàng)目背景

筆者在進(jìn)行某項(xiàng)目開發(fā)時(shí),需要實(shí)時(shí)調(diào)節(jié)定時(shí)器的周期,以控制定時(shí)器下次更新中斷的時(shí)間。

預(yù)裝載寄存器

自動重裝載寄存器 ARR 是一個(gè) 16 位的寄存器,這里面裝著計(jì)數(shù)器能計(jì)數(shù)的最大數(shù)值。當(dāng)計(jì)數(shù)到這個(gè)值的時(shí)候,如果使能了中斷的話,定時(shí)器就產(chǎn)生溢出中斷。在物理上這個(gè)寄存器對應(yīng)2個(gè)寄存器,一個(gè)是程序員可以寫入或讀出的寄存器,稱為preload register(預(yù)裝載寄存器),另一個(gè)是程序員看不見的、但在操作中真正起作用的寄存器,稱為shadow register(影子寄存器)。

在圖中可以看到auto-reload register這個(gè)框有一個(gè)陰影,有些其它寄存器也有用陰影表示,如我用藍(lán)色標(biāo)出的Capture/Compare寄存器;有陰影的寄存器,表示在物理上這個(gè)寄存器對應(yīng)2個(gè)寄存器,一個(gè)是程序員可以寫入或讀出的寄存器,稱為preload register(預(yù)裝載寄存器),另一個(gè)是程序員看不見的、但在操作中真正起作用的寄存器,稱為shadow register(影子寄存器);正如手冊上的14.3.1節(jié)所說,根據(jù)TIMx_CR1寄存器中APRE位的設(shè)置,preload register的內(nèi)容可以隨時(shí)傳送到shadow register,即兩者是連通的(permanently),或者在每一次更新事件(UEV)時(shí)才把preload register的內(nèi)容傳送到shadow register。
參考文獻(xiàn)

實(shí)現(xiàn)方法

禁用預(yù)裝載寄存器,修改ARR的值(TIM_Period)會直接操作影子寄存器,新的ARR值將立即生效:

TIM_ARRPreloadConfig(TIM4, DISABLE);

使能預(yù)裝在寄存器,修改ARR的值(TIM_Period)會操作預(yù)裝載寄存器,直到更新事件后,ARR預(yù)裝載寄存器的值才會被拷貝到影子寄存器中:

TIM_ARRPreloadConfig(TIM4, ENABLE);

TIM_ARRPreloadConfig函數(shù)的定義如下:

/*** @brief Enables or disables TIMx peripheral Preload register on ARR.* @param TIMx: where x can be 1 to 17 to select the TIM peripheral.* @param NewState: new state of the TIMx peripheral Preload register* This parameter can be: ENABLE or DISABLE.* @retval None*/ void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState) {/* Check the parameters */assert_param(IS_TIM_ALL_PERIPH(TIMx));assert_param(IS_FUNCTIONAL_STATE(NewState));if (NewState != DISABLE){/* Set the ARR Preload Bit */TIMx->CR1 |= TIM_CR1_ARPE;}else{/* Reset the ARR Preload Bit */TIMx->CR1 &= (uint16_t)~((uint16_t)TIM_CR1_ARPE);} }

總結(jié)

以上是生活随笔為你收集整理的STM32开发项目:定时器预装载寄存器(ARR)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。