国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32 F103C8T6學習筆記4:時鐘樹、滴答計時器、定時器定時中斷

這篇具有很好參考價值的文章主要介紹了STM32 F103C8T6學習筆記4:時鐘樹、滴答計時器、定時器定時中斷。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

今日理解一下STM32F103 C8T6的時鐘與時鐘系統(tǒng)、滴答計時器、定時器計時中斷的配置,文章提供原理,代碼,測試工程下載。

目錄

時鐘樹與時鐘系統(tǒng):

滴答計時器:

定時器計時中斷:

測試結果:

測試工程下載:


時鐘樹與時鐘系統(tǒng):

該系統(tǒng)介紹在 STM32F10x-中文參考手冊 P56頁開始

STM32 F103C8T6學習筆記4:時鐘樹、滴答計時器、定時器定時中斷,STM32 F103 C8T6筆記,stm32,學習,筆記

微控制器的時鐘系統(tǒng)包括以下幾個主要的時鐘源:

1. HSE(High-Speed External): 外部高速晶振,可接入外部晶振作為系統(tǒng)時鐘源。
2. HSI(High-Speed Internal):?? 內部高速振蕩器,提供內部時鐘源。
3. PLL(Phase Locked Loop):?? 鎖相環(huán),可以通過將外部時鐘源或內部時鐘源倍頻得到更高的系統(tǒng)時鐘頻率。

時鐘系統(tǒng)的配置和選擇可以通過對系統(tǒng)寄存器 RCC(Reset and Clock Control)的相應位進行配置。根據配置的不同,時鐘系統(tǒng)可分為以下幾個模式:

1. HSI模式:使用HSI作為系統(tǒng)時鐘源。
2. HSE模式:使用HSE作為系統(tǒng)時鐘源。
3. PLL模式:通過PLL倍頻方式產生高頻時鐘。

1、單片機內部的RC振蕩器是8Mhz
2、通過單片機引腳(OSC_IN OSC_OUT)接外部的晶振,這里就對外部的晶振有要求了,要求外部晶振輸入頻率范圍是4Mhz~32Mhz
3、是通過單片機引腳接外部的低速32.768Khz晶振,這個是單獨的給內部的實時時鐘模塊(RTC)使用
4、是內部的低速RC振蕩器40K,可以給RTC用,也可以給IWDG看門狗模塊用
5、是時鐘信號從MCO這個引腳上輸出,這個輸出可以作為測試,看看內部的時鐘配置是否正確,也可以用作和其他硬件進行時鐘同步用

如上5種不同類型的時鐘,供給不同的需求,內置的RC振蕩器受到溫度影響會大一些;
這幾個外部時鐘晶振接口,根據需求使用;也可選擇不用,空著,或者接其他電路也可以;
時鐘信號進來,還要操作一些相關寄存器 分頻/倍頻后,才成為"系統(tǒng)時鐘SYSCLK"、HSI時鐘、HSE時鐘等等之類的,應用于單片機各個模塊(比如定時器、ADC、USART、APB perpherials、I2C… )

滴答計時器:

#include "SysTick.h"

static u8  fac_us=0;							//us延時倍乘數			   
static u16 fac_ms=0;							//ms延時倍乘數


//初始化延遲函數
//SYSTICK的時鐘固定為AHB時鐘的1/8
//SYSCLK:系統(tǒng)時鐘頻率
void SysTick_Init(u8 SYSCLK)
{
	SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); 
	fac_us=SYSCLK/8;					
	fac_ms=(u16)fac_us*1000;				   
}								    


//延時nus
//nus為要延時的us數.		    								   
void delay_us(u32 nus)
{		
	u32 temp;	    	 
	SysTick->LOAD=nus*fac_us; 					//時間加載	  		 
	SysTick->VAL=0x00;        					//清空計數器
	SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;	//開始倒數	  
	do
	{
		temp=SysTick->CTRL;
	}while((temp&0x01)&&!(temp&(1<<16)));		//等待時間到達   
	SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;	//關閉計數器
	SysTick->VAL =0X00;      					 //清空計數器	 
}

//延時nms
//注意nms的范圍
//SysTick->LOAD為24位寄存器,所以,最大延時為:
//nms<=0xffffff*8*1000/SYSCLK
//SYSCLK單位為Hz,nms單位為ms
//對72M條件下,nms<=1864 
void delay_ms(u16 nms)
{	 		  	  
	u32 temp;		   
	SysTick->LOAD=(u32)nms*fac_ms;				//時間加載(SysTick->LOAD為24bit)
	SysTick->VAL =0x00;							//清空計數器
	SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;	//開始倒數  
	do
	{
		temp=SysTick->CTRL;
	}while((temp&0x01)&&!(temp&(1<<16)));		//等待時間到達   
	SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;	//關閉計數器
	SysTick->VAL =0X00;       					//清空計數器	  	    
} 

定時器計時中斷:

查表可知,TIM2/3/4是適合作通用定時器的:

STM32 F103C8T6學習筆記4:時鐘樹、滴答計時器、定時器定時中斷,STM32 F103 C8T6筆記,stm32,學習,筆記

?此處我以初始化定時器4為通用定時器舉例:

計數器溢出頻率:???

CK CNT_OV= CK CNT?? /??? (ARR+1)

???????????????????? =? CK PSC? /??? (PSC +1)? /? (ARR +1)?

這里的計數器溢出頻率單位是赫茲,計數器溢出頻率的倒數就是定時器觸發(fā)的時間周期,一般我們計算用的是下面一個等于號的式子,這里的符號表示如下:

CK_PSC 一般為72Mhz(72 000 000)

ARR 自動重裝 對應變量TIM_Period 范圍0~65535

PSC 分頻? 對應變量 TIM_Prescaler 范圍0~65535

1. 定時器時鐘分頻(TIMx_PSC)

是用來將系統(tǒng)時鐘(通常為主頻)分頻為定時器的時鐘頻率。例如,如果系統(tǒng)時鐘為72MHz,定時器時鐘分頻設置為72-1,則定時器時鐘頻率為1MHz。定時器時鐘分頻越大,定時器的時鐘頻率越低。

2. 預分頻(TIMx_ARR)

是用來設置定時器溢出時間(自動重裝載寄存器值)的參數。當定時器計數器達到預分頻值時,定時器將溢出,并產生中斷或其他相關事件。預分頻的值決定了定時器溢出時間的長度。例如,如果預分頻值為1000,定時器時鐘頻率為1MHz,則定時器溢出時間為1ms。

以下為初始化定時器? 2? 作定時中斷,周期為1ms :

每次進入定時中斷都會通過串口1 打印一次進入中斷的總次數T:

#include "TIMER_init.h"

//初始化定時器2用作計時中斷定時器:
void Timer2_Init(void)
{
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;	
	NVIC_InitTypeDef NVIC_InitStructure;
	
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
	
	TIM_InternalClockConfig(TIM2);//選擇哪個中斷就寫哪個
	
	
	TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;     //修改分頻,對實際情況影響不大,可以不修改,這里是不分頻(可選1~72)
	TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上對齊模式,同時還有向下對齊,中央對齊模式
	TIM_TimeBaseInitStructure.TIM_Period = 10000 - 1;							  //計數器周期。該參數決定了計數器計數溢出前的最大值。
	TIM_TimeBaseInitStructure.TIM_Prescaler = 7200 - 1;							//分頻器預分頻系數。該參數決定了計數器時鐘頻率的變化程度。
	TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;            //高級計數器需要,不需要用到的直接給0就好
	TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);
	
	TIM_ClearFlag(TIM2, TIM_FLAG_Update);                           //用于解決一復位時就先進一次中斷的情況
	TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;       //搶占優(yōu)先級
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;              //響應優(yōu)先級
	NVIC_Init(&NVIC_InitStructure);
	
	TIM_Cmd(TIM2, ENABLE);
	
}

定時中斷服務函數:

#include "TIMER_init.h"

uint16_t T;

void TIM2_IRQHandler(void)
{
	if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)
	{
		printf("T=%d",T);
		T++;
		TIM_ClearITPendingBit(TIM2, TIM_IT_Update);//清出中斷寄存器標志位,用于退出中斷
	}
}

測試結果:

STM32 F103C8T6學習筆記4:時鐘樹、滴答計時器、定時器定時中斷,STM32 F103 C8T6筆記,stm32,學習,筆記文章來源地址http://www.zghlxwxcb.cn/news/detail-640255.html

測試工程下載:https://download.csdn.net/download/qq_64257614/88202750?spm=1001.2014.3001.5503

到了這里,關于STM32 F103C8T6學習筆記4:時鐘樹、滴答計時器、定時器定時中斷的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • STM32 F103C8T6學習筆記4:時鐘樹、滴答計時器、定時器定時中斷

    STM32 F103C8T6學習筆記4:時鐘樹、滴答計時器、定時器定時中斷

    今日理解一下STM32F103 C8T6的時鐘與時鐘系統(tǒng)、滴答計時器、定時器計時中斷的配置,文章提供原理,代碼,測試工程下載。 目錄 時鐘樹與時鐘系統(tǒng): 滴答計時器: 定時器計時中斷: 測試結果: 測試工程下載: 該系統(tǒng)介紹在 STM32F10x-中文參考手冊 P56頁開始 微控制器的時鐘系

    2024年02月13日
    瀏覽(31)
  • STM32 F103C8T6學習筆記8:0.96寸單色OLED顯示屏顯示字符

    STM32 F103C8T6學習筆記8:0.96寸單色OLED顯示屏顯示字符

    使用STM32F103 C8T6 驅動0.96寸單色OLED顯示屏: OLED顯示屏的驅動,在設計開發(fā)中OLED顯示屏十分常見,因此今日學習一下。一篇文章從程序到顯示都講通。 文章提供源碼、原理解釋、測試工程下載,測試效果圖展示。 ? 目錄 OLED驅動原理—IIC通信: SSD1306 單色 0.96 OLED 顯示屏特性

    2024年02月12日
    瀏覽(23)
  • STM32 F103C8T6學習筆記13:IIC通信—AHT10溫濕度傳感器模塊

    STM32 F103C8T6學習筆記13:IIC通信—AHT10溫濕度傳感器模塊

    今日學習一下這款AHT10 溫濕度傳感器模塊,給我的OLED手環(huán)添加上測溫濕度的功能。 文章提供源碼、測試工程下載、測試效果圖。 目錄 AHT10溫濕度傳感器: 特性: 連接方式: 適用場所范圍: 程序設計: 設計目標: ?程序設計注意點: AHT10代碼: ?主函數代碼: 測試效果:

    2024年02月11日
    瀏覽(25)
  • STM32 F103C8T6學習筆記2:GPIO的認識—GPIO的基本輸入輸出—點亮一個LED

    STM32 F103C8T6學習筆記2:GPIO的認識—GPIO的基本輸入輸出—點亮一個LED

    今日繼續(xù)學習使用? STM32 F103C8T6開發(fā)板 點亮一個LED燈,文章提供源碼,測試工程,實驗效果圖,希望我的歸納總結會對大家有幫助~ 目錄 GPIO的認識與分類 : 引腳安排整理: 定時器的引腳例舉: 串口的引腳例舉: ?CAN串口通信: SPI通信: IIC通信: ?其余引腳: 燒錄引腳:

    2024年02月11日
    瀏覽(19)
  • STM32 F103C8T6學習筆記5:定時器輸出不同占空比PWM驅動舵機旋轉角度

    現(xiàn)在學習使用STM32 F103C8T6的定時器PWM模式,使用PWM驅動舵機轉動不同角度,文章提供源碼,測試工程,測試動態(tài)效果圖。 目錄 基礎原理: ?實驗目標: 測試視頻結果: 測試工程下載: 這次依舊拿出之前學習過的舵機DS3115,它的基礎原理不多加介紹,在往期講MSP432的文章有所

    2024年02月13日
    瀏覽(24)
  • STM32 HAL庫 CubeMX配置 定時器學習 F103C8T6

    STM32 HAL庫 CubeMX配置 定時器學習 F103C8T6

    開發(fā)板: STM32F103C8T6最小系統(tǒng)板 編譯環(huán)境: Keil5 MDK 輔助軟件: STM32 CubeMX 課程教學: 基于正點原子HAL庫學習教程 其余配件: 江科大STM32配件包?和 示波器一臺 備注: ?因為這塊開發(fā)板沒有基本定時器,所以本文也 沒有基本定時器的內容 ????????????本文1.3和2.1部分的

    2024年04月26日
    瀏覽(20)
  • STM32 F103C8T6學習筆記10:OLED顯示屏GIF動圖取?!喴讜r鐘—動圖手表的制作~

    STM32 F103C8T6學習筆記10:OLED顯示屏GIF動圖取模—簡易時鐘—動圖手表的制作~

    今日嘗試做一款有動圖的OLED實時時鐘,本文需要現(xiàn)學一個OLED的GIF動圖取模 其余需要的知識點有不會的可以去我? STM32 F103C8T6學習筆記? 系列專欄自己查閱把,閑話不多,直接開肝~~~ 文章提供源碼,測試工程下載,測試效果圖。 做個簡易的時鐘,就不把RTC實時時鐘放進來學了

    2024年02月12日
    瀏覽(41)
  • STM32 F103C8T6學習筆記6:IIC通信__驅動MPU6050 6軸運動處理組件—一階互補濾波

    STM32 F103C8T6學習筆記6:IIC通信__驅動MPU6050 6軸運動處理組件—一階互補濾波

    今日主要學習一款傾角傳感器——MPU6050,往后對單片機原理基礎講的會比較少,更傾向于簡單粗暴地貼代碼,因為經過前些日子對MSP432的學習,對原理方面也有些熟絡了,除了在新接觸它時會對其引腳、時鐘、總線等進行仔細一些的研究之外,其余驅動方面便是照搬經驗了~

    2024年02月13日
    瀏覽(23)
  • STM32 F103C8T6學習筆記9:0.96寸單色OLED顯示屏—自由取模顯示—顯示漢字與圖片

    STM32 F103C8T6學習筆記9:0.96寸單色OLED顯示屏—自由取模顯示—顯示漢字與圖片

    今日學習0.96寸單色OLED顯示屏的自由取模顯示: 宋體漢字比較復雜,常用字符可以直接復制存下來,畢竟只有那么幾十個字母字符,但漢字實在太多了,基本不會全部放在單片機里存著,一般用到多少個字就取幾個字的模,因此漢字放在這里與自由取模一起講。 文章提供源碼

    2024年02月11日
    瀏覽(25)
  • STM32系列(HAL庫)——F103C8T6獲取DHT11溫濕度串口打印

    STM32系列(HAL庫)——F103C8T6獲取DHT11溫濕度串口打印

    在此特別鳴謝原文博主! (1)編程平臺:Keil5 (2)CubeMX (3)XCOM(串口調試助手) (1)F1的板子,本例使用經典F103C8T6 ?(2)DHT11——溫濕度傳感器 (3)ST-link?下載器 (4)USB-TTL模塊 (5)杜邦線若干 (1)芯片選擇 STM32F103C8T6 ?(2)配置RCC、SYS、時鐘樹 配置RCC 配置SYS 配置時鐘樹 (3) 配置GPIO ?(4)配置

    2023年04月08日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包