国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

基于stm32單片機(jī)的通用定時(shí)器配置

發(fā)布者:心動(dòng)旋律最新更新時(shí)間:2024-09-13 來源: elecfans關(guān)鍵字:stm32  單片機(jī)  通用定時(shí)器  配置 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

stm32單片機(jī)定時(shí)器資源相當(dāng)豐富,它的定時(shí)器分為高級(jí)控制定時(shí)器、通用定時(shí)器和基本定時(shí)器,具體這些定時(shí)器資源在哪個(gè)系列的片子有就得看不同的片子的手冊(cè)了。他們具體有什么區(qū)別,我也是剛接觸這個(gè),看他的數(shù)據(jù)手冊(cè)介紹也是茫然,主要是剛開始摸,那些功能都沒用到,反正用做定時(shí)作用的話哪種定時(shí)器都行。在這我就把我自己配置通用定時(shí)器的方法及心得簡短做個(gè)總結(jié),以防以后忘記了。我配置的是定時(shí)器2(TIM2)。


通用定時(shí)器的時(shí)鐘可來自于外部或內(nèi)部,選用默認(rèn)即是采用內(nèi)部的。通用定時(shí)器的時(shí)鐘來源為APB1總線,所以首先,得將APB1外設(shè)時(shí)鐘打開。


RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
其次,就是定時(shí)器的相關(guān)參數(shù)信息的配置,這些參數(shù)信息都在TIM_TimeBaseInitTypeDef這么一個(gè)結(jié)構(gòu)體當(dāng)中,所以得定義這么一個(gè)結(jié)構(gòu)體變量。結(jié)構(gòu)體中的有關(guān)成員含義如下:

TIM_TimeBaseInitStrcture.TIM_Prescaler = 0x1c20;  //時(shí)鐘預(yù)分頻系數(shù),看單詞意思就知道了,即是將APB1時(shí)鐘進(jìn)行相應(yīng)分頻得到一個(gè)合適的頻率
TIM_TimeBaseInitStrcture.TIM_CounterMode = TIM_CounterMode_Up;  //計(jì)數(shù)模式
TIM_TimeBaseInitStrcture.TIM_Period = 0x270f;  //計(jì)數(shù)周期,即是往ARR寄存器中填的一個(gè)自動(dòng)轉(zhuǎn)載值,這個(gè)值等于目標(biāo)值-1
TIM_TimeBaseInitStrcture.TIM_ClockDivision=TIM_CKD_DIV1;  //這是數(shù)字濾波器的相關(guān)設(shè)置,定時(shí)的時(shí)候不用外部時(shí)鐘,所以這個(gè)設(shè)為0即可,TIM_CKD_DIV1這個(gè)就是等價(jià)于0,你要是設(shè)為其他值也不影

下面自然是初始化這個(gè)結(jié)構(gòu)體當(dāng)中的參數(shù)信息了。
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStrcture);
再次,就是定時(shí)器中斷的相關(guān)配置了,在配置中斷的時(shí)候特別一定要注意順序,否則就會(huì)出問題,我一開始就是沒注意這個(gè)順序問題,看著錯(cuò)誤還不知道怎么回事,還好后面被我發(fā)現(xiàn),哈哈。在使能中斷之前一定得先清掉中斷中斷標(biāo)志位和中斷掛起位,如下:

TIM_ClearFlag(TIM2, TIM_FLAG_Update);
TIM_ClearITPendingBit(TIM2, TIM_FLAG_Update);
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);

如果不先清掉掛起位和標(biāo)志位,那么一使能中斷,就立馬進(jìn)入中斷服務(wù)函數(shù),顯然這不是我們想要的,我就被這個(gè)問題整了一下。接下來就是使能定時(shí)器了,TIM_Cmd(TIM2, ENABLE);這自不用說。
最后,就是配置NVIC嵌套向量中斷控制寄存器了。

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00);//the second parameter must be a multiple of 0x200
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//2 bits for pre-emption priority, 2 bits for subpriority
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

其實(shí),我認(rèn)為在主函數(shù)里調(diào)用定時(shí)器配置函數(shù)和NVIC配置函數(shù)時(shí),應(yīng)該先調(diào)用NVIC配置函數(shù),因?yàn)橄仍O(shè)置好中斷分組等相關(guān)參數(shù)信息后,再去打開定時(shí)器,定時(shí)器中斷就能按照NVIC的信息去工作。
接下來的就是在stm32f10x_it.c中寫自己的中斷服務(wù)函數(shù)了。
void TIM2_IRQHandler(void)
{
…………
}
到此,通用定時(shí)器配置成功。


關(guān)鍵字:stm32  單片機(jī)  通用定時(shí)器  配置 引用地址:基于stm32單片機(jī)的通用定時(shí)器配置

上一篇:STM32CUBEMX開發(fā)GD32F303(14)----IIC之配置OLED
下一篇:基于STM32的直流電機(jī)PID調(diào)速系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

推薦閱讀最新更新時(shí)間:2025-06-09 11:39

STM32學(xué)習(xí)筆記(5):通用定時(shí)器PWM輸出
1.TIMER輸出PWM基本概念 脈沖寬度調(diào)制(PWM),是英文“Pulse Width Modulation”的縮寫,簡稱脈寬調(diào)制,是利用微處理器的數(shù)字輸出來對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù)。簡單一點(diǎn),就是對(duì)脈沖寬度的控制。一般用來控制步進(jìn)電機(jī)的速度等等。 STM32的定時(shí)器除了TIM6和TIM7之外,其他的定時(shí)器都可以用來產(chǎn)生PWM輸出,其中高級(jí)定時(shí)器TIM1和TIM8可以同時(shí)產(chǎn)生7路的PWM輸出,而通用定時(shí)器也能同時(shí)產(chǎn)生4路的PWM輸出。 1.1PWM輸出模式 STM32的PWM輸出有兩種模式,模式1和模式2,由TIMx_CCMRx寄存器中的OCxM位確定的(“110”為模式1,“111”為模式2)。模式1和
[單片機(jī)]
stm32庫函數(shù)學(xué)習(xí)篇通用定時(shí)器輸入捕獲功能
實(shí)現(xiàn)功能:PA8隨意延時(shí)驅(qū)動(dòng)led燈閃爍,并且將PA8用杜邦線連接到PA7口,PA7是通用定時(shí)器TIM3的2通道,在TIM3_CH2觸發(fā)中斷程序中取反連接到PD2口的led燈,指示中斷程序運(yùn)行,并且每次進(jìn)入中斷后改變觸發(fā)捕獲的極性。實(shí)現(xiàn)兩個(gè)led燈會(huì)交替閃爍。 先有必要了解stm32定時(shí)器的輸入觸發(fā)模塊,如下圖: 需要注意的是,一眼望去一個(gè)定時(shí)器似乎有8個(gè)通道,左邊四個(gè),右邊四個(gè),但其實(shí)左邊和右邊是共用相同的IO引腳,所以名稱標(biāo)注是一模一樣。也就是說,每個(gè)通用定時(shí)器都只有四個(gè)獨(dú)立通道,當(dāng)某一通道作為了輸入觸發(fā)功能那就不能再作為輸出匹配功能。這一點(diǎn)我們也可以從其他地方找到印證。比如TIM_ITConfig()函數(shù)中如下
[單片機(jī)]
<font color='red'>stm32</font>庫函數(shù)學(xué)習(xí)篇<font color='red'>通用</font><font color='red'>定時(shí)器</font>輸入捕獲功能
STM32Cubemx下實(shí)現(xiàn)通用定時(shí)器微秒級(jí)延時(shí)
因?yàn)镾TM32 HAL庫中僅有對(duì)HAl_Delay()毫秒級(jí)的延時(shí),為實(shí)現(xiàn)精確的微秒級(jí)延時(shí),就不得不修改Systick,但由于HAL庫內(nèi)部使用其作為超時(shí)判斷等操作,對(duì)其修改會(huì)發(fā)生不可預(yù)期的錯(cuò)誤,不建議修改。因此,使用通用定時(shí)器進(jìn)行定時(shí)操作。 參考網(wǎng)上例程,使用定時(shí)器中斷方式實(shí)現(xiàn)延時(shí),代碼如下: /* TIM3溢出時(shí)間=72MHz/(71+1)/(0+1)=1Mhz=1us 計(jì)數(shù)模式:向上計(jì)數(shù)模式 使能TIM3中斷 */ __IO static uint32_t usDelay=0; void Delayms(uint32_t ms) { Delayus(ms*1000); } void Delayus(u
[單片機(jī)]
stm32使用AD5762配置程序
AD5762是一款由ADI(Analog Devices)推出的12位單通道、高速、低功耗的數(shù)字模擬轉(zhuǎn)換器(DAC)。它是STM32微控制器的一部分,用于實(shí)現(xiàn)模擬輸出功能。本文將詳細(xì)介紹如何使用STM32來配置AD5762。 首先,我們需要確保STM32的開發(fā)環(huán)境已經(jīng)搭建好,并且熟悉STM32的編程方式。接下來,我們將按照以下步驟來配置AD5762: 確定STM32與AD5762的接口方式。AD5762可以通過SPI(串行外設(shè)接口)與STM32通信。我們需要確定SPI引腳的分配情況,并根據(jù)需要配置STM32的SPI控制器。 初始化SPI控制器。在STM32中,我們首先需要配置SPI控制器的工作模式、數(shù)據(jù)傳輸模式、數(shù)據(jù)大小等
[單片機(jī)]
零基礎(chǔ)入門STM32定時(shí)器配置及其中斷設(shè)置
  我們大家都知道STM32定時(shí)器比較多,但調(diào)試都是一樣的,寄存器都是一一對(duì)應(yīng)的。就拿tiM2舉例說明。在網(wǎng)上搜了好多關(guān)于定時(shí)器的設(shè)置,但大多數(shù)都是一個(gè)版本,而且都是針對(duì)庫函數(shù)操作的,讓人看起來一頭霧水,對(duì)于初學(xué)者很是不利(我也是初學(xué)者)。下面我將自己的定時(shí)器設(shè)置過程一一記錄下來,以供大家參考,我們共同學(xué)習(xí)……   首先定義定時(shí)器頭文件,也就是定義寄存器以供操作:   #define TIM2_CR1 (*((volatile unsigned long *)0x40000000))   #define TIM2_CR2 (*((volatile unsigned long *)0x40000004))   #define
[單片機(jī)]
STM32】1—零基礎(chǔ)硬件軟件配置 & 完成LED的閃爍
1 基礎(chǔ)準(zhǔn)備 1.1 硬件準(zhǔn)備 首先,我們需要用四根杜邦線完成開發(fā)板與下載器的連接。 連接方式:DAPLINK上的3V3、SWD、SCK、GND,分別通過杜邦線與開發(fā)板上的VCC、SWDIO、SWCLK、GND相連。 對(duì)于驅(qū)動(dòng)問題,若是使用Win10、Win11系統(tǒng),則無需安裝驅(qū)動(dòng),即插即用。在數(shù)據(jù)線插上電腦USB接口后,可從電腦設(shè)備管理器找到。 1.2 軟件準(zhǔn)備 打開STM32CubeMX,打開MCU SELECTOR,搜索并選中芯片STM32F407VET6: 時(shí)鐘源配置(時(shí)鐘樹配置參看文章開頭的兩篇博客): GPIO引腳配置: ① 初始化輸出電
[單片機(jī)]
【<font color='red'>STM32</font>】1—零基礎(chǔ)硬件軟件<font color='red'>配置</font> & 完成LED的閃爍
【STM32CubeMX】1,STM32之GPIO端口輸入模式配置
主要參考這兩篇文章 https://blog.csdn.net/flaming999/article/details/52487904 https://blog.csdn.net/kevinhg/article/details/17490273 2、推挽輸出與開漏輸出的區(qū)別 推挽輸出:可以輸出高,低電平,連接數(shù)字器件;開漏輸出:輸出端相當(dāng)于三極管的集電極. 要得到高電平狀態(tài)需要上拉電阻才行. 適合于做電流型的驅(qū)動(dòng),其吸收電流的能力相對(duì)強(qiáng)(一般20ma以內(nèi)). 推挽結(jié)構(gòu)一般是指兩個(gè)三極管分別受兩互補(bǔ)信號(hào)的控制,總是在一個(gè)三極管導(dǎo)通的時(shí)候另一個(gè)截止. 要實(shí)現(xiàn) 線與 需要用OC(open collector)門電路.是兩個(gè)參數(shù)
[單片機(jī)]
【STM32CubeMX】1,<font color='red'>STM32</font>之GPIO端口輸入模式<font color='red'>配置</font>
配置STM32的PWM輸出時(shí)沒有波形輸出的問題
以前在組織代碼的時(shí)侯都是在初始化系統(tǒng)時(shí)鐘時(shí)就一并初始化了各個(gè)外設(shè),如 端口、定時(shí)器、串口等, 今天突發(fā)奇想,將各外設(shè)的初始化放到各外設(shè)的模塊中去,這樣的話沒用到的外設(shè)就可以不用給時(shí)鐘,降低能耗。 就這樣問題出現(xiàn)了,PWM輸出時(shí)沒有波形輸出。 反復(fù)檢查對(duì)比了定時(shí)器的功能模塊配置、輸出IO的設(shè)置、RCC配置等,一直沒有找到原因。 在準(zhǔn)備放棄的時(shí)侯,有一搭沒一搭的掃代碼,突然一看,在設(shè)置輸出IO代碼之前沒有給輸出IO配置時(shí)鐘,是在后配置的。 是不是這里的問題呢, 馬上試試,果然。 這一記當(dāng)頭棒喝?。?:) 所以, 在配置輸出IO之前就要先配置IO時(shí)鐘,謹(jǐn)記之!
[單片機(jī)]
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved