第一步:
具體配置如下圖:激活需要使用到的外設定時器,當系統時鐘頻率為64MHz時,我們希望1MS發生中斷一次;就可以把時鐘的預分頻系數設置為64-1;計數周期設置為1000-1;計數方式為 Up 向上計數,此時得到的中斷頻率為:64,000,000 /64 /1000 = 1MS = 1Khz ;
第二步:
可以根據自身需要在NVIC 中斷控制器中配置中斷響應優先級。
第三步:
代碼分析:
先看TIM7的初始化函數:static void MX_TIM7_Init(void)
static void MX_TIM7_Init(void)
{
/* USER CODE BEGIN TIM7_Init 0 */
/* USER CODE END TIM7_Init 0 */
TIM_MasterConfigTypeDef sMasterConfig = {0};
/* USER CODE BEGIN TIM7_Init 1 */
/* USER CODE END TIM7_Init 1 */
htim7.Instance = TIM7;
htim7.Init.Prescaler = 64-1;
htim7.Init.CounterMode = TIM_COUNTERMODE_UP;
htim7.Init.Period = 1000-1;
htim7.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_Base_Init(&htim7) != HAL_OK)
{
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim7, &sMasterConfig) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN TIM7_Init 2 */
//在這這里添加這行代碼,意思是初始化完成便開啟定時器中斷計數
HAL_TIM_Base_Start_IT(&htim7);
/* USER CODE END TIM7_Init 2 */
}
/* USER CODE BEGIN 4 */
//在BEGIN 4 中添加定時器中斷服務函數
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if (htim->Instance == htim7.Instance) //如果是TIM7響應進來的中斷
{
MS ++; //前面配置中斷更新時間為1MS,那么這里進來一次MS加一次
if(MS == 1000) //當MS加到1000時,即1S
{
HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin); //即1S LED翻轉一次
MS =0; //MS用完后記得清0
}
}
}
/* USER CODE END 4 */
如果能理解到這里,恭喜你已經學會了定時器的基本操作!
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
定時器
+關注
關注
23文章
3271瀏覽量
116560 -
函數
+關注
關注
3文章
4363瀏覽量
63769 -
代碼
+關注
關注
30文章
4875瀏覽量
69952
發布評論請先 登錄
相關推薦
怎么在VxWorks下實現異步通用定時器的設計?
本文設計了基于看門狗機制的異步通用定時器,并根據實際需要設計了周期性定時和一次性定時兩種定時器。異步是指定時器運行于任務中,對用戶沒有任何限
發表于 04-28 06:33
stm32進行定時器操作的步驟
進來。在進行定時器操作時,一般按如下步驟來進行: 1、打開相關外設的時鐘。以定時器TIM3為例,由stm32的時鐘樹可以看到,TIM3時鐘掛接在APB1上面,所以打開TIM3時鐘時使用RC
發表于 08-13 06:16
89C52中斷和定時器的操作步驟
文章目錄一、中斷1.1 基本概念1.2 代碼和實驗部分二、定時器一、中斷1.1 基本概念其實中斷的概念很好理解:試想一下你正在教室里面搞單片機(這相當于與CPU正在執行主程序)這時,防空警報響了(一
發表于 12-02 06:42
LabVIEW編程LabVIEW開發高級數據采集技術 計數器定時器的操作 例程與相關資料
LabVIEW編程LabVIEW開發高級數據采集技術 計數器定時器的操作 例程與相關資料典型的多功能DAQ設備只有2個板載計數器,而智能DAQ則能在各條數字線上運行計數
發表于 01-14 20:33
STM32單片機的基本定時器如何操作以及編程呢
STM32F1系列的產品,除了互聯網產品外,工作8個,3種定時器,其中一種就是基本定時器。那么STM32單片機的基本定時器如何操作以及編程呢?下面我們就來詳細的了解一下STM32F1系
發表于 01-26 06:46
RT-Thread提供了怎樣的定時器操作函數以及如何使用它們呢
時鐘節拍任何操作系統都需要提供一個時鐘節拍,以供系統處理所有和時間有關的事件,如延時、線程的時間片輪轉調度以及定時器超時等。時鐘節拍(OS Tick)是操作系統中最小的時間單位。時鐘節拍是特定
發表于 04-02 11:41
【CW32飯盒派開發板試用體驗】+定時器操作初探討
*/
}
定時器的實現,將有助我們后面程序功能的實現。本次定時器操作初探討在這里就結束了,有興趣的小伙伴或者
想深入研究的小伙伴,可以多看看官方的參考代碼,實際動手去調試。發現問題,然后解決問題,如此,才能進步。
發表于 06-10 22:46
看門狗定時器的設計、工作原理及看門狗定時器的操作
看門狗定時器(WDT,Watch Dog Timer)是單片機的一個組成部分,它實際上是一個計數器,一般給看門狗一個數字,程序開始運行后看門狗開始倒計數。如果程序運行正常,過一段時間CPU應發出指令讓看門狗復位,重新開始倒計數。如果看門狗減到0就認為程序沒有正常工作,強制
發表于 05-23 09:14
?8045次閱讀

看門狗定時器的原理及操作解讀
在這里T1的定時時間要設的大于主程序的運行時間,給主程序留有一定的的裕量。而T1的中斷正常與否我們再由T0定時中斷子程序來監視。這樣就夠成了一個循環,T0監視T1,T1監視主程序,主程序又來監視T0,從而保證系統的穩定運行。
【單片機技術】—— 89C52中斷和定時器操作1
文章目錄一、中斷1.1 基本概念1.2 代碼和實驗部分二、定時器一、中斷1.1 基本概念其實中斷的概念很好理解:試想一下你正在教室里面搞單片機(這相當于與CPU正在執行主程序)這時,防空警報響了(一
發表于 11-23 17:06
?11次下載

評論