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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

设计分享 | STM32F103RCT6定时器定时中断原理

發布時間:2023/12/8 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计分享 | STM32F103RCT6定时器定时中断原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

wx:嵌入式工程師成長日記

https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484146&idx=1&sn=8633770f809e999f05b8dc9a99cbef4c&chksm=cf4307aaf8348ebc677d7277d56ab1bae8b0d0f0ada1932af3877bc3b5e8a9fe6ead180f374a&token=1179446781&lang=zh_CN#rdhttps://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484146&idx=1&sn=8633770f809e999f05b8dc9a99cbef4c&chksm=cf4307aaf8348ebc677d7277d56ab1bae8b0d0f0ada1932af3877bc3b5e8a9fe6ead180f374a&token=1179446781&lang=zh_CN#rd

具體功能實現

當啟動開發板時,OLED上的數字開始每隔1s自增一,實現定時器的功能

器件

STM32F103RCT6,OLED屏,四根杜邦線

前后展示圖

前展示圖

后展示圖

知識介紹

ClearFlag()和ClearITPendingBit()的區別

ClearFlag():清除中斷標志位

ClearITPendingBit():清除中斷待處理位

標志位是事件發生與否的判斷依據,用于支持函數的運行,如果事件發生,則該位至1,但是這不一定會產生中斷

待處理位是控制中斷發生的標志,如果該位置1(前提是相應標志位置1和中斷已使能),則會產生中斷,進入中斷服務函數,而且在中斷服務函數中必須手動將該位置0,否則程序會一直執行該中斷。

TIM_Cmd

使能和失能外圍設備(開啟定時器時鐘)

TIM_RepetitionCounter()

只有在高級定時器才能用到

基本定時器:TIM6,TIM7

通用定時器:TIM2~TIM5

高級定時器:TIM1,TIM8

其中TIM1和TIM8的時鐘是由APB2輸出產生,其他則是由APB1輸出產生

NVIC(嵌套向量中斷控制)

作用:用于中斷分組,從而分配搶占優先級和響應優先級

編程步驟:

①選擇優先級分組?NVIC_PriorityGroupConfig

②選擇,配置,并使能中斷?

NVIC_InitStructure.NVIC_IRQChannel?=?TIM2_IRQn;?//選擇定時器2中斷?
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority?=?2;?//搶占優先級為2?
NVIC_InitStructure.NVIC_IRQChannelSubPriority?=?0x02;?//響應優先級為1
NVIC_InitStructure.NVIC_IRQChannelCmd?=?ENABLE;?//使能定時器2中斷;?
NVIC_Init(&NVIC_InitStructure);?//初始化以上參數;

③寫出相應的中斷函數

void?EXTI2_IRQHandler(void)?

中斷函數都是固定的,需查閱文件

主函數代碼(C語言)KEIL5實現

#include?"stm32f10x.h"????????//?Device?header#include?"Delay.h"#include?"OLED.h"#include?"Timer.h"void?timer_init(){TIM_TimeBaseInitTypeDef?TIM_TimeBaseInitStruct;TIM_InternalClockConfig(TIM2);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInitStruct.TIM_Period=10000-1;TIM_TimeBaseInitStruct.TIM_Prescaler=7200-1;TIM_TimeBaseInitStruct.TIM_RepetitionCounter=0;TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStruct);TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitTypeDef?NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;NVIC_Init(&NVIC_InitStructure);TIM_Cmd(TIM2,ENABLE);}u16?num;int?main(){OLED_Init();timer_init();OLED_ShowString(1,1,"num");while(1){OLED_ShowNum(1,5,num,5);}}void?TIM2_IRQHandler(){if(TIM_GetITStatus(TIM2,TIM_IT_Update)==SET){num++;TIM_ClearITPendingBit(TIM2,TIM_IT_Update);}}

問題解答

Q

什么是搶占優先級和響應優先級?

A

STM32?的中斷向量具有兩個屬性,一個為搶占屬性,另一個為響應屬性,其屬性編號越小,表明它的優先級別越高。

①搶占優先級:打斷其他中斷的屬性,因為這個屬性會出現嵌套中斷,在執行完中斷服務函數B后再繼續執行中斷函數A,由NVIC_IRQChannelPreemptionPriority()配置

②響應優先級:在搶占屬性相同時,當兩個中斷向量的搶占優先級相同時,如果兩個中斷同時到達,則先處理響應優先級高的中斷。(優先級數字越小,優先級越高)由NVIC_IRQChannelSubPriority()配置

?wx:嵌入式工程師成長日記

https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484146&idx=1&sn=8633770f809e999f05b8dc9a99cbef4c&chksm=cf4307aaf8348ebc677d7277d56ab1bae8b0d0f0ada1932af3877bc3b5e8a9fe6ead180f374a&token=1179446781&lang=zh_CN#rdhttps://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484146&idx=1&sn=8633770f809e999f05b8dc9a99cbef4c&chksm=cf4307aaf8348ebc677d7277d56ab1bae8b0d0f0ada1932af3877bc3b5e8a9fe6ead180f374a&token=1179446781&lang=zh_CN#rd

總結

以上是生活随笔為你收集整理的设计分享 | STM32F103RCT6定时器定时中断原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。