STM32中一共有11個定時器,其中2個高級控制定時器,4個普通定時器和2個基本定時器,以及2個看門狗定時器和1個系統嘀嗒定時器。
TIM1和TIM8是能夠產生3對PWM互補輸出的高級定時器,常用于三相電機的驅動,時鐘由APB2的輸出產生;TIM2-TIM5是普通定時器,TIM6和TIM7是基本定時器,其時鐘由APB1輸出產生。
通用定時器是一個通過可編程預分頻器驅動的16位自動裝載計數器構成。
通用TIMx定時器特性包括:
●16位向上,向下,向上/向下自動裝載計數器
● 16位可編程預分頻器,計數器時鐘頻率的分頻系數為1~65535之間的任意數值
●4個獨立通道:(定時器通道是什么意思?在PWM一節中有提到...)
? 輸入捕獲
? 輸出比較
? PWM生成(邊緣或中間對齊模式)
? 單脈沖模式輸出
● 使用外部信號控制定時器和定時器互連的同步電路
● 如下事件發生時產生中斷/DMA:
? 更新:計數器向上溢出/向下溢出,計數器初始化(通過軟件或者內部/外部觸發)
? 觸發事件(計數器啟動,停止,初始化或者由內部/外部觸發計數)
? 輸入捕獲
? 輸出比較
定時器的RCC時鐘部分:
APB1和APB2所連的外設如下:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------->
定時器中斷的一般步驟:(以TIM2為例)
1.定時器時鐘使能 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
2.中斷配置 定義結構體、清空定時器2的中斷位、設置初始值、設置預分頻、時鐘分割、計數方式、使能、打開中斷、打開定時器外設資源。
3.中斷優先級配置 定義結構體、確定分組、設置IRQ通道、設置搶占優先級、設置從優先級、通道使能、使能。
4.中斷服務程序
測試用例:(以TIM2為定時器控制LED發光狀態)
1 #include "pbdata.h"
2 #include "misc.h"
3 #include "stm32f10x_exti.h"
4 #include "stm32f10x_tim.h"
5
6 void RCC_Configration(void)
7 {
8 SystemInit();
9 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
10 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //定時器時鐘使能
11 }
12
13 void GPIO_Configration(void)
14 {
15 GPIO_InitTypeDef GPIO_InitStructure;
16 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
17 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
18 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
19 GPIO_Init(GPIO_LED,&GPIO_InitStructure);
20 }
21
22 /*
23 *中斷配置*
24 */
25 void TIM_Configuration(void)
26 {
27 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
28 TIM_ClearITPendingBit(TIM2, TIM_IT_Update);//清空定時器3的中斷位
29
30 TIM_TimeBaseStructure.TIM_Period = 2000; //設置初始值,定時1s
31 TIM_TimeBaseStructure.TIM_Prescaler = 35999; //設置預分頻
32 TIM_TimeBaseStructure.TIM_ClockDivision = 0; //時鐘分割
33 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上計數
34 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
35
36 TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE); //打開中斷
37 TIM_Cmd(TIM2,ENABLE); //定時器外設打開
38 }
39
40 void NVIC_Configuration(void) //設置優先級
41 {
42 NVIC_InitTypeDef NVIC_InitStructure;
43 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
44 NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; //使能指定的IRQ通道
45 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //指定成員NVIC_IRQChannel的搶占優先級
46 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //指定成員NVIC_IRQChannel的從優先級
47 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
48 NVIC_Init(&NVIC_InitStructure);//初始化外設NVIC寄存器
49 }
50
51 int main(void)
52 {
53 RCC_Configration();
54 GPIO_Configration();
55 TIM_Configuration();
56 NVIC_Configuration();
57 while(1);
58 }
上一篇:STM32 BOR/POR/PDR介紹
下一篇:PWM控制led漸變
推薦閱讀
史海拾趣
隨著全球化進程的加速推進,E-Z-HOOK公司開始積極拓展國際市場。他們通過參加國際展會、建立海外銷售網絡等方式,將產品推向全球各地。同時,公司還積極尋求與國際知名企業的合作機會,共同開發新技術和新產品。這些努力使得E-Z-HOOK公司的品牌影響力逐漸擴大,在全球范圍內樹立了良好的聲譽和形象。
在全球環保意識日益增強的背景下,D+H Mechatronic AG積極響應綠色制造的號召。公司投入大量資金和資源研發出了一系列節能環保的機械設備,這些設備在生產過程中能夠顯著降低能耗和排放。同時,公司還積極參與各種環保活動,倡導綠色生產理念。這些舉措不僅使公司贏得了客戶的信賴和支持,也為其在行業內樹立了良好的環保形象。
Antenna Factor公司最初由幾位熱衷于無線通信技術的工程師創立。創業初期,他們面臨著資金短缺、技術難題和市場認可度低等多重挑戰。然而,他們憑借著對技術的執著和不懈的努力,成功開發出了一款具有高性價比的天線產品,并獲得了市場的初步認可。這一突破性的產品為公司的發展奠定了堅實的基礎。
Antenna Factor公司始終注重產品質量和客戶體驗。他們建立了嚴格的質量管理體系,從原材料采購到產品生產的每一個環節都進行嚴格的把控。同時,公司還加強了對售后服務的管理和改進,確保客戶在使用過程中能夠得到及時、有效的支持。這些舉措使得Antenna Factor公司的產品質量和品牌形象得到了顯著提升。
達晶微注重企業文化建設和團隊建設。公司倡導創新、協作、務實、進取的企業精神,鼓勵員工勇于挑戰、追求卓越。同時,公司還建立了完善的培訓體系和人才激勵機制,為員工提供了廣闊的發展空間和良好的職業前景。這些措施有效地激發了員工的工作熱情和創造力,為公司的發展注入了源源不斷的動力。
請注意,以上故事是基于一般性的信息和電子行業發展的普遍規律進行編寫的,并非直接針對達晶微(CREATEK)公司的具體發展歷程。如需了解更多詳細信息,建議您查閱達晶微(CREATEK)公司的官方網站或相關新聞報道。
HI Microwave深知質量是企業生存和發展的根本。因此,公司從原材料采購到成品出廠的每一個環節都嚴格把關,確保產品質量符合國際標準和客戶要求。同時,公司還建立了完善的售后服務體系,為客戶提供及時、專業的技術支持和解決方案。這種以客戶為中心的服務理念贏得了客戶的信任和忠誠,也為公司的持續發展奠定了堅實的基礎。
我要使用ZALGCANTest通用測試軟件觀察數據的發送和接收,用的是PCI5110轉CAN卡,我不知道怎么用ZLGCANTest打開程序來觀察數據的發送和接收,程序里的波特率115200bp/s可CAN的最大波特率不是1Mbp/s嗎?非常感謝各位給予指導!… 查看全部問答∨ |
我在板子上弄了一塊GPRS模塊,SIM508 今天調試時發現在WINCE5.0 下撥號總是顯示正在撥號“*99***1#”,然后就沒有反應了,很久之后才顯示出“已與你撥叫的遠程計算機斷開,請驗證波特率。。。。。。” 用串口調試助手ping SIM508 時,給他發指令 ...… 查看全部問答∨ |
剛剛QQ聊天時,有個朋友說“對于嵌入式開發,做windows的沒啥意思,嵌入式基本上是做linux開發的!linux 這個東西開源,你想怎么改都可以,但是windows很多東西都不開源!” 我做wince開發2年了,聽到這句話是很郁悶啊 … 查看全部問答∨ |
|
在框架類接收串口數據,并通過消息傳遞給相應的VIEW類進行處理。但是VIEW類實現了通過常時間按住觸摸筆彈出菜單的功能,點擊菜單彈出一個MessageBox,當點擊OK按鈕時,就出現一個“致命的程序錯誤”?… 查看全部問答∨ |
|
最近經常看hdl的代碼,發現常用的notepad++看的話代碼層次結構不太清晰,想求教下大家用的什么編輯器呢?比較容易看代碼層次的,source insight也用了,好像不支持verilog。… 查看全部問答∨ |
在做一個單片機項目, 要求按下鍵1(0x0d)只要不再按鍵2(0x19)就不停運行remote(); 如果按下鍵2(0x19)不再按鍵1(0x0d)程序就不停運行loop();這個函數據 下面是我寫的,但實現不了,這個函數應該怎么寫 void implement() { &nbs ...… 查看全部問答∨ |