娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

基于stm32單片機的通用定時器配置

發布者:心動旋律最新更新時間:2024-09-13 來源: elecfans關鍵字:stm32  單片機  通用定時器  配置 手機看文章 掃描二維碼
隨時隨地手機看文章

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


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


RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
其次,就是定時器的相關參數信息的配置,這些參數信息都在TIM_TimeBaseInitTypeDef這么一個結構體當中,所以得定義這么一個結構體變量。結構體中的有關成員含義如下:

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

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

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

如果不先清掉掛起位和標志位,那么一使能中斷,就立馬進入中斷服務函數,顯然這不是我們想要的,我就被這個問題整了一下。接下來就是使能定時器了,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);

其實,我認為在主函數里調用定時器配置函數和NVIC配置函數時,應該先調用NVIC配置函數,因為先設置好中斷分組等相關參數信息后,再去打開定時器,定時器中斷就能按照NVIC的信息去工作。
接下來的就是在stm32f10x_it.c中寫自己的中斷服務函數了。
void TIM2_IRQHandler(void)
{
…………
}
到此,通用定時器配置成功。


關鍵字:stm32  單片機  通用定時器  配置 引用地址:基于stm32單片機的通用定時器配置

上一篇:STM32CUBEMX開發GD32F303(14)----IIC之配置OLED
下一篇:基于STM32的直流電機PID調速系統設計與實現

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

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

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 兰坪| 社会| 宁城县| 鹤壁市| 金昌市| 嘉黎县| 河北省| 上林县| 苏尼特左旗| 老河口市| 堆龙德庆县| 富平县| 瓦房店市| 耒阳市| 通渭县| 东港市| 莆田市| 灌阳县| 皮山县| 天津市| 鞍山市| 偏关县| 乐清市| 华安县| 濮阳市| 徐闻县| 锦屏县| 炉霍县| 汉源县| 濮阳县| 安庆市| 洪泽县| 南康市| 广昌县| 垣曲县| 呼图壁县| 南宫市| 英山县| 云阳县| 河北省| 凤冈县|