久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
STM8L的TIM4定時功能詳解 含例程
[打印本頁]
作者:
51hei小林
時間:
2016-10-10 00:45
標題:
STM8L的TIM4定時功能詳解 含例程
TIM4是STM8最簡單的定時器,忽略掉級聯同步的功能,TIM4就只具有定時功能.非常適合剛剛接觸STM8定時器的初學者學習.
從上圖可以看到,TIM4由一個分頻器,自動重裝寄存器和計數器組成,結構非常簡單.
系統主時鐘fsysclk經TIM4分頻器分頻后,提供給TIM4作為計數時鐘.
TIM4是一個向上計數的定時器.從0開始計數,當計數到與自動重載寄存器的值相等時,產生溢出,重新從0開始計數.
定時器溢出時,如果TIM4_CR1中的UDIS位為0,則產生一個更新事件,若此時打開了TIM4的中斷,則進入中斷.如果溢出時,UDIS為1,則不會進入中斷.
本文利用TIM4的定時功能,實現LED閃爍.TIM4周期性的進入中斷,翻轉LED控制IO,控制LED閃爍.
在程序中有對定時時間計算的過程,這里再重復一遍.
系統時鐘頻率默認為:16M/ 2^3 =2M
本例程中TIM4的分頻器分頻值為10,則最終提供給TIM4的頻率為:2M/2^10=2M/1024=1953.125Hz.
本例程TIM4的重裝值為200,所以TIM4的溢出頻率為:1953.125Hz/200=9.76Hz.
溢出周期為:1000ms/9.76=102.4ms
所以每隔102ms,會進入一次定時器中斷.
下圖是,使用邏輯分析儀,測到的LED的控制IO的輸出波形,可以看到,LED亮和滅的時間都為102.8ms.與理論計算值一致,誤差是由于使用的是內部時鐘,這個時鐘不準.
/*硬件連接*/
// PC7---->LED
/****************************************************************************************
*開發環境:IAR for stm8 v6.5.3
*硬件平臺:STM8L-DISCOVERY
*功能說明:配置TIM4定時器,實現定時進入TIM4中斷,反轉LED電平,測量LED的IO得到頻率,與理論計算時間比對,驗證定時功能
*作 者:茗風
****************************************************************************************/
#include"iostm8l152c6.h"
#include"stdint.h"
/******************************************************************************************************
* 名 稱:void GPIO_Init(void)
* 功 能:初始化PC7為高速推挽輸出
* 入口參數:無
* 出口參數:無
* 說 明:測量系統時鐘頻率的IO,測量到的頻率有定時器配置決定
* 范 例:無
******************************************************************************************************/
void GPIO_Init(void)
{
PC_CR1_C17 =1;//推挽輸出
PC_CR2_C27 =1;//高速輸出
PC_DDR_DDR7 =1;//PC4輸出
// PC_ODR_ODR7 =0;//輸出低電平
}
/******************************************************************************************************
* 名 稱:void TIMER4_Init(void)
* 功 能:stm8的TIM4定時器初始化
* 入口參數:無
* 出口參數:無
* 說 明:TIM4被此函數配置為204ms進入一次TIM4中斷,由于使用的是內部RC時鐘,實際時間會有一定偏差
* 范 例:無
******************************************************************************************************/
void TIMER4_Init(void)
{
//-------打開TIM4外設時鐘-------
CLK_PCKENR1_PCKEN12=1;//打開定時器1時鐘
//----禁用預裝載寄存器----
TIM4_CR1_ARPE =0;//不經過緩存,分頻值和重裝值立即被寫入.
//除非需要頻繁的在定時器運行時,改變分頻值和重裝值,否則沒必要使用預裝載寄存器
//------設置TIM4時鐘分頻值------
TIM4_PSCR_PSC=10;//分頻值 2M/2^10=2M/1024=1953.125Hz
//-重裝值,TIM4從0計數到此值,發生溢出-
TIM4_ARR=200;//自動重裝值 1953.125Hz/200=9.76HZ
//1000ms/9.76=102ms
//TIM4定時器每隔102ms進入一次中斷
//本程序,每次進入中斷后會反轉接LED的IO電平,所以LED閃爍周期為2*102ms=204ms
//LED閃爍頻率為 1000ms/204ms=4.9Hz
//讀者可以改變ARR值和PSC值,根據上面計算過程,驗證定時器的這種功能
TIM4_CR1_URS=1;//僅當計數器溢出時才發生中斷請求
TIM4_CR1_UDIS=0;//允許更新中斷
TIM4_CR1_CEN=1;//開啟計數器
TIM4_IER_UIE=1;// update interrupt enable
}
/******************************************************************************************************
* 名 稱:int main(void)
* 功 能:通過PC4輸出選擇的時鐘
* 入口參數:無
* 出口參數:無
* 說 明:因為STM8l discovery沒有接外部高速晶振,所以沒辦法輸出HSE,不要
* 范 例:無
******************************************************************************************************/
void main( void )
{
GPIO_Init();
TIMER4_Init();
asm("rim"); //開啟全局中斷
while(1)
{
// asm("wfi");
}
}
#pragma vector=TIM4_UIF_vector
__interrupt void TIM4_UIF_ISR (void)
{
PC_ODR_ODR7 ^=1;//控制LED1的亮滅
TIM4_SR1_UIF=0;//清除中斷標志位
}
復制代碼
作者:
jxchen
時間:
2019-2-4 15:01
感謝分享!!!!!!!!!!!!!!!!!!!!!!!
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
麻豆亚洲一区
|
91看片在线
|
成人免费看片98欧美
|
性色在线
|
亚洲成人免费观看
|
香蕉视频色
|
黄网免费
|
毛片av在线
|
香蕉综合网
|
免费一区二区视频
|
日韩在线视频播放
|
特黄视频
|
国产资源在线播放
|
久久国产一区
|
夜夜嗨av一区二区三区网页
|
伊人色综合网
|
性视频网
|
午夜影院在线观看视频
|
欧美日韩一区在线观看
|
四虎久久久
|
中文字幕在线观看一区二区三区
|
亚洲一级黄色片
|
成人毛片在线播放
|
一级黄毛片
|
综合一区二区三区
|
国产免费一区
|
男人添女荫道口图片
|
国产极品国产极品
|
在线网站免费观看18
|
av黄页
|
91av视频在线
|
一级久久
|
国产伦精品一区二区三区88av
|
午夜黄视频
|
91亚洲视频
|
日韩高清一区
|
激情另类小说
|
亚洲在线观看视频
|
久久机热这里只有精品
|
天天看天天干
|
亚洲欧美另类在线观看
|