在嵌入式系統(tǒng)與設備驅(qū)動開發(fā)的廣闊領域中,時鐘、定時器以及延時函數(shù)扮演著至關重要的角色。它們不僅是系統(tǒng)時間管理的基石,更是實現(xiàn)高效、精確控制硬件行為的關鍵工具。本文將深入探討這三種機制在驅(qū)動開發(fā)中的具體應用、實現(xiàn)方式及注意事項,以期為開發(fā)者提供全面的理解和實踐指導。
在常規(guī)的例程中,都少不了測試I/O控制作用的點亮LED的程序。
單片機編程過程中經(jīng)常用到延時函數(shù),最常用的莫過于微秒級延時delay_us()和毫秒級delay_ms()。
今天主要分享嵌入式系統(tǒng)中常用的延時函數(shù)。
/* SystemFrequency / 1000 1ms中斷一次* SystemFrequency / 100000 10us中斷一次* SystemFrequency / 1000000 1us中斷一次*/#define SYSTICKPERIOD 0.000001#define SYSTICKFREQUENCY (1/SYSTICKP
#ifndef _DELAY_H_#define _DELAY_H_#define uint unsigned int#define uchar unsigned charvoid delay_1us( void ); //延時1usvoid delay_1ms( void ); //延時nmsvoid delay_nus( uint n );//延時1msvoid delay_nms
Q:什么是SYSTick定時器?SysTick 是一個24 位的倒計數(shù)定時器,當計到0 時,將從RELOAD 寄存器中自動重裝載定時初值。只要不把它在SysTick 控制及狀態(tài)寄存器中的使能位清除,就永不停息。Q:為什么要設置SysTick定時
注:本文實踐用到的芯片是cortex-m3系列的STM32F103VET6,文中涉及內(nèi)容覆蓋整個STM32F1系列M3單片機。本文適合學習STM32的初學者閱讀。STM32定時器包含基本定時器、通用定時器和高級定時器,其中TIM6和TIM7是STM32當
#ifndef _DELAY_51_H_#define _DELAY_51_H_#include #define uint unsigned int#define uchar unsigned char//nus延時void delay_nus( uchar n );//nms延時void delay_nms( uchar n );//2us延時void delay_2us( ucha
第二個實驗,這個實驗是基于第一個實驗上在編譯函數(shù)中稍加改變而成,1 #include //也有其他的編譯方法,比如第二行可以也成 #define u16 unsigned int / typedef unsigned u16 2 sbit led = P2^0;3 void
//粗延時函數(shù),微秒void delay_nus(u16time){ u16 i=0; while(time--){i=10;//自己定義while(i--) ; }}//毫秒級的延時void delay_nms(u16 time){ u16i=0; while(time--){i=12000;//自己定義while(i--) ; }}運用SysTi
/****************************************************** *說 明:S3C2440 進行微秒級、毫秒級延時函數(shù) ******************************************************/MCLK:405MHzHCLK:135MHzPCLK:67.5MHz在這里定時
//實例8:用不同數(shù)據(jù)類型控制燈閃爍時間#include //包含單片機寄存器的頭文件 /****************************************************** 函數(shù)功能:用整形數(shù)據(jù)延時一段時間 ***********************************
先計算你單片機的振蕩(時鐘)周期 T= 1/晶振(11.0592MHZ)
C程序中可使用不同類型的變量來進行延時設計。經(jīng)實驗測試,使用unsigned char類型具有比unsigned int更優(yōu)化的代碼,在使用時應該使用unsigned char作為延時變量。 以某晶振為12MHz的單片機為例,晶振為12MHz即一個機器周期為1us。