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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

STM32延时函数的四种方法:普通延时(2种)、SysTick 定时器延时(2种)

發布時間:2025/6/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32延时函数的四种方法:普通延时(2种)、SysTick 定时器延时(2种) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

STM32延時函數的三種方法:普通延時、SysTick 定時器延時(1.中斷方式;2.非中斷方式)

?

單片機編程過程中經常用到延時函數,最常用的莫過于微秒級延時delay_us( )和毫秒級delay_ms( )。

1.普通延時法

(1)普通延時法1

這個比較簡單,讓單片機做一些無關緊要的工作來打發時間,經常用循環來實現,不過要做的比較精準還是要下一番功夫。下面的代碼是在網上搜到的,經測試延時比較精準。

//粗延時函數,微秒 void delay_us(u16 time) {????u16 i=0;??while(time--){i=10;??//自己定義while(i--) ;????} } //毫秒級的延時 void delay_ms(u16 time) {????u16 i=0;??while(time--){i=12000;??//自己定義while(i--) ;????} }

(2)普通延時法2

void delay(u16 num) {u16 i,j;for(i=0;i<num;i++)for(j=0;j<0x800;j++); }

2.SysTick?定時器延時

CM3?內核的處理器,內部包含了一個SysTick?定時器,SysTick?是一個24?位的倒計數定時器,當計到0?時,將從RELOAD?寄存器中自動重裝載定時初值。只要不把它在SysTick?控制及狀態寄存器中的使能位清除,就永不停息。SysTick?在STM32的參考手冊里面介紹的很簡單,其詳細介紹,請參閱《Cortex-M3?權威指南》。

?這里面也有兩種方式實現:

(1)中斷方式?如下,定義延時時間time_delay,SysTick_Config()定義中斷時間段,在中斷中遞減time_delay,從而實現延時。

volatile unsigned long time_delay; //?延時時間,注意定義為全局變量 //延時n_ms void delay_ms(volatile unsigned long nms) {//SYSTICK分頻--1ms的系統時鐘中斷if (SysTick_Config(SystemFrequency/1000)){while (1);}time_delay=nms;//讀取定時時間while(time_delay);SysTick->CTRL=0x00; //關閉計數器SysTick->VAL =0X00; //清空計數器 } //延時nus void delay_us(volatile unsigned long nus) {//SYSTICK分頻--1us的系統時鐘中斷if (SysTick_Config(SystemFrequency/1000000)){while (1);}time_delay=nus;//讀取定時時間while(time_delay);SysTick->CTRL=0x00; //關閉計數器SysTick->VAL =0X00; //清空計數器 }//在中斷中將time_delay遞減。實現延時void SysTick_Handler(void) {if(time_delay)time_delay--; }

(2)非中斷方式

主要仿照原子的《STM32不完全手冊》。SYSTICK?的時鐘固定為HCLK?時鐘的1/8,在這里我們選用內部時鐘源72M,所以SYSTICK的時鐘為9M,即SYSTICK定時器以9M的頻率遞減。SysTick?主要包含CTRL、LOAD、VAL、CALIB?等4?個寄存器。

CTRL: SysTick控制和狀態寄存器
LOAD: SysTick重裝載值寄存器
VAL:? ? SysTick當前值寄存器
CALIB:SysTick校準值寄存器

對這幾個寄存器的操作被封裝到core_cm3.h中:

SysTick->CTRL

位段

名稱

類型

復位值

描述

16

COUNTFLAG

R

0

如果在上次讀本寄存器后systick已為0,則該位為1,若?讀該位自動清零

2

CLKSOURCE

RW

0

0:外部時鐘源?1:內部時鐘

1

TICKINT

RW

0

0:減到0無動作;1:減到0產生systick異常請求

0

ENABLE

RW

0

systick定時器使能位

?

SysTick-> LOAD

位段

名稱

類型

復位值

描述

23:0

RELOAD

RW

0

減到0時被重新裝載的值

SysTick-> VAL

位段

名稱

類型

復位值

描述

23:0

CURRENT

RW

0

讀取時返回當前倒計數的值,寫則清零,同時還會清除在systick控制及狀態寄存器中的COUNTFLAG標志

SysTick-> CALIB?不常用,在這里我們也用不到,故不介紹了。

程序如下,相當于查詢法。

//仿原子延時,不進入systic中斷 void delay_us(u32 nus) {u32 temp;SysTick->LOAD = 9*nus;SysTick->VAL=0X00;//清空計數器SysTick->CTRL=0X01;//使能,減到零是無動作,采用外部時鐘源do{temp=SysTick->CTRL;//讀取當前倒計數值}while((temp&0x01)&&(!(temp&(1<<16))));//等待時間到達SysTick->CTRL=0x00; //關閉計數器SysTick->VAL =0X00; //清空計數器 } void delay_ms(u16 nms) {u32 temp;SysTick->LOAD = 9000*nms;SysTick->VAL=0X00;//清空計數器SysTick->CTRL=0X01;//使能,減到零是無動作,采用外部時鐘源do{temp=SysTick->CTRL;//讀取當前倒計數值}while((temp&0x01)&&(!(temp&(1<<16))));//等待時間到達SysTick->CTRL=0x00; //關閉計數器SysTick->VAL =0X00; //清空計數器 }

三種方式各有利弊,第一種方式容易理解,但不太精準。第二種方式采用庫函數,編寫簡單,由于中斷的存在,不利于在其他中斷中調用此延時函數。第三種方式直接操作寄存器,看起來比較繁瑣,其實也不難,同時克服了以上兩種方式的缺點,個人感覺比較好用。

總結

以上是生活随笔為你收集整理的STM32延时函数的四种方法:普通延时(2种)、SysTick 定时器延时(2种)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 相亲对象是问题学生在线观看 | xxx国产精品 | 美女被草视频 | 床戏高潮做进去大尺度视频 | 欧美一二三视频 | 亚洲国产成人精品激情在线 | 亚洲色图影院 | 亚洲专区欧美 | 一级免费大片 | 91羞羞网站 | 免费国偷自产拍精品视频 | 日韩理论在线 | 免费看一级一片 | 国产麻豆精品久久一二三 | 人人妻人人爽欧美成人一区 | 久久无码视频网站 | 凹凸日日摸日日碰夜夜 | 亚洲香蕉| 91免费看大片 | 久久老司机精品视频 | 欧美一区亚洲二区 | 69日本xxxxxxxx96 | 日本高清网站 | 亚洲视频在线一区 | 国产情侣一区二区三区 | 老司机精品福利视频 | 精品视频入口 | 美女日批网站 | 超碰在线最新地址 | 青青操网站 | 欧美综合自拍 | 永久免费精品 | 69色| 久久久性色精品国产免费观看 | 国产乱国产乱300精品 | 作爱视频在线 | 国产美女免费视频 | 免费人成又黄又爽又色 | 老妇女玩小男生毛片 | 国产精品入口夜色视频大尺度 | 激情二区| 亚洲精品www | 天堂av一区二区三区 | 成人a区 | 精品久久香蕉国产线看观看亚洲 | 91嫩草欧美久久久九九九 | 91在线观看视频 | 欧美黑粗硬 | 日韩精品中文字幕在线播放 | 国产99精品 | 成年人高清视频 | 欧美韩日一区二区 | 最新中文字幕第一页 | 免费看污片网站 | 老妇女玩小男生毛片 | 欧美黄色a | 精品无码一区二区三区电影桃花 | 日本久久中文字幕 | 99re6这里只有精品 | 免费一区二区在线观看 | 欧美激情va永久在线播放 | 国产一区亚洲 | 精品少妇一区二区三区在线观看 | 户外少妇对白啪啪野战 | 成人无码精品1区2区3区免费看 | 天天槽| 公侵犯人妻中文字慕一区二区 | 精品少妇theporn | 亚洲免费观看av | 午夜天堂在线观看 | 久久久www免费人成人片 | 亚洲欧美一区二区三区孕妇 | 一级特毛片 | 91天天看| 亚洲成人精品网 | 超碰人体 | 视频一区二区三区在线 | 日本少妇激情视频 | 亚洲经典三级 | 日本www在线播放 | 毛片精品| 成年网站免费观看 | 国产一区二区高清视频 | 国产精久久一区二区三区 | 日本精品国产 | 果冻传媒18禁免费视频 | 亚洲精品乱码久久久久久蜜桃动漫 | 中文字幕一区二区久久人妻网站 | 高潮一区二区三区 | 女子spa高潮呻吟抽搐 | 国产精品自拍一区 | 欧美色激情 | 美女视频三区 | 丰满人妻一区二区三区在线 | 黄色网在线 | 无罩大乳的熟妇正在播放 | 青青草在线观看视频 | 日韩视频一二三区 | 国产高清视频一区 |