簡體   English   中英

即時更改預分頻器並立即使用

[英]Change Prescaler on the fly and use it immediately

我設法通過使用動態更改時鍾 TIM2 的預分頻器

__HAL_TIM_SET_PRESCALER(&htim2,newValue);

但是,直到計數器重置為零,它才會以舊速度計數。

我可以強制程序立即使用新的預分頻器值嗎?

我正在使用 STM32L052K8Tx

STM32F10x 的參考手冊(大多數 STM32 具有相同的定時器):

PSC 包含要在每次更新事件時加載到活動預分頻器寄存器中的值(包括當計數器通過 TIMx_EGR 寄存器的 UG 位清零或配置為“復位模式”時通過觸發控制器清零時)。

您必須等到計數器歸零。 該事件可以通過 EGR 寄存器中的 UG 位強制執行,這將重置 CNT 並強制重新加載。 如果您需要保持 CNT 值,則不可能在不獲取更新事件的情況下使用 PSC 實時“調整”計時器速度。

但是您可以嘗試使用一個定時器作為另一個定時器的預分頻器,在主從模式下運行兩個定時器。 第一個定時器的 ARR 可以在沒有緩沖的情況下重新加載(TIMx_CR1 中的 APRE 位 = 0),第二個定時器不會受到影響。 請參閱參考手冊和示例中的“定時器同步”一章,例如庫中的 TIM_Synchronization。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM