第一章 介紹滴答定時器的章節
滴答定時器和普通的定時器功能其實差不多,都是定時器;滴答定時器是24位的,單次計時的時間更加長,平時滴答定時器主要作為系統心跳使用。 比如:RTOS、UCOS實時操作系統的心跳值、LWIP、UIP網絡協議棧的心跳值等等。 如果項目里沒有操作系統這些系統庫,可以將滴答定時器用來作為延時函數的時間基準,方便給項目提供精確的延時;下面介紹了滴答定時器的基本使用之后,也會介紹滴答定時器作為延時函數的封裝方法,提供高精度的延時函數。
STM32F407參考手冊中第10章介紹了滴答定時器的校準值。
M4 權威指南介紹滴答定時器的章節,M3 權威指南中與M4 權威指南中的介紹一樣。
第二章 滴答定時器的示例代碼
在sys.c文件中增加滴答定時器的代碼,測試定時效果
下面的例子代碼是演示滴答定時器的使用效果,直接設置了一個固定的超時時間,時間到達之后就會進入到中斷,改變LED狀態。
/*
函數功能:滴答時鐘初始化配置
注意:SysTick->LOAD是一個24位的寄存器,單次最大延時時間為894.7848ms
*/
void SysTickInit(void)
{
SysTick->CTRL&=~(1<<2); //選擇外部時鐘源
SysTick->CTRL|=1<<1; //開啟中斷
SysTick->LOAD=18750*800;//重裝載寄存器,最大24位,最大值:16777215
SysTick->VAL=0; //清除CNT計數值
SysTick->CTRL|=1<<0; //SysTick 定時器的使能位
}
/*
函數功能:滴答時鐘中斷服務函數
*/
void SysTick_Handler(void)
{
LED0=!LED0;
LED1=!LED1;
}
復制代碼
第三章 使用滴答定時器編寫延時函數
3.1 在delay.c文件增加以下代碼
/*
函數功能:延時函數初始化
*/
void DelayInit(void)
{
SysTick->CTRL&=~(1<<2); //選擇外部時鐘源
SysTick->CTRL&=~(1<<1); //關閉中斷
}
/*
函數功能:延時毫秒的函數
函數參數:毫秒的時間
*/
void DelayMs(u32 time)
{
u32 stat;
SysTick->LOAD=18750*time; //重裝載寄存器,最大24位,最大值:16777215
SysTick->VAL=0; //清除CNT計數值
SysTick->CTRL|=1<<0; //SysTick 定時器的使能位
do
{
stat=SysTick->CTRL; //獲取狀態位
}while((!(stat&1<<16))&&(stat&1<<0));
SysTick->CTRL=0x0;
}
/*
函數功能:延時微秒的函數
函數參數:毫秒的時間
*/
void DelayUs(u32 time)
{
u32 stat;
SysTick->LOAD=18.750*time; //重裝載寄存器,最大24位,最大值:16777215
SysTick->VAL=0; //清除CNT計數值
SysTick->CTRL|=1<<0; //SysTick 定時器的使能位
do
{
stat=SysTick->CTRL; //獲取狀態位
}while((!(stat&1<<16))&&(stat&1<<0));
SysTick->CTRL=0x0;
}
復制代碼
3.2 閃光燈示例
在主函數里加上邏輯代碼,使用剛才編寫的延時函數完成延時,實現閃光燈效果。
#include "stm32f4xx.h" // Device header
#include "led.h"
#include "delay.h"
#include "key.h"
#include "usart.h"
#include "sys.h"
#include "exti.h"
int main(void)
{
LED_Init();
KEY_Init();
USART1_Init(84,115200);
KEY_EXTI_Init();
while(1)
{
DelayUs(100);
LED0=!LED0;
LED1=!LED1;
}
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
單片機
+關注
關注
6032文章
44514瀏覽量
632980 -
STM32
+關注
關注
2266文章
10871瀏覽量
354796 -
定時器
+關注
關注
23文章
3237瀏覽量
114467 -
STM32F407
+關注
關注
15文章
187瀏覽量
29371
發布評論請先 登錄
相關推薦
STM32F407作USB host驅動聲卡,USB就會出錯的原因?
我用STM32F407 作USB host,配置為FS。用它接聲卡。如果STM32F407 單向給 聲卡傳送音頻,輸出聲音正常。或者 407單向接收聲卡的音頻,工作也正常。但是同時發送
發表于 07-04 06:56
STM32F407如何能直接出42MHz的方波?
2、用另外一臺F407的定時中斷做時鐘源,發現頻率最高可以到1.3MHz,不能滿足需求
3、買了LM311的電壓比較器,在路上,準備把MCO1輸出的42MHz的正弦波變成方波
就是想問問老哥們,還有沒有什么方法沒有被
發表于 05-30 07:31
求助,使用STM32F407的定時器問題求解
最近在使用STM32F407的定時器,遇到一個詭異的問題。
我用TIM2做PWM波形輸出,用了一個OC腳。中斷的配置是只有更新事件產生中斷。
在每個更新事件產生時,UIF位由硬件置位,系統進入中斷
發表于 05-17 08:25
使用STM32F407正點原子的開發板作為客戶端,電腦作為服務器端時程序總是死在接收函數上是為什么?
生成的工程可以ping通,使用STM32F407正點原子的開發板作為客戶端,電腦作為服務器端時程序總是死在接收函數上,把接收函數屏蔽后程序正常也能于服務器連接上。請大神指教,是否是哪里
發表于 04-29 06:54
把MATLAB中的模型下載到STM32F407中跑,TIM1的中斷是灰色的,無法選擇是什么問題?
用ST官網提供的stm32-mat_target插件,希望可以直接把MATLAB中的模型下載到STM32F407中跑,在試驗例程中用定時器TIM1控制LED時,TIM1的中斷是灰色的,無法選擇,這是什么問題?
發表于 04-28 07:19
STM32F407系列使用HSI時鐘后,PLL最高能配置到多少?
最近在使用STM32F407系列,當使用HSI時鐘后,PLL最高只能配置到42MHz,找了很多文檔也沒有介紹這方面的資料。如果超過42Mhz,就會發生跑飛的情況。我也試過配置到48MHz,也是會跑飛
發表于 04-26 07:49
請問STM32F407在電機驅動器應用中如何正確關閉高級定時器的PWM?
我們在開發一款電機驅動器,使用了STM32F407的高級定時器1產生的PWM驅動H橋。
在驅動器檢測到過流等故障情況下,需要立即關斷PWM。
發表于 04-18 07:47
STM32F407的定時器9和10怎么設置為主從關系?
中關閉主定時器的PWM輸出,達到精確的位移控制的目的,這樣只用進一次中斷,而不用每次進中斷里進行計數。
我用通用定時器2-5可以實現;
但是9-14就實現不了了;
tid=46003
發現這個解答挺像回事的,但是stm32f4
發表于 03-28 06:02
STM32F407 3線SPI如何配置?
現在需要3線SPI進行通信,也就是從機的MOSI和MISO為一根線。
我在參考手冊看到,STM32F407可以滿足雙向數據線
請問ST官方有沒有peripheral libraries或者例程可供參考?
發表于 03-26 07:16
使用STM32F407定時器中斷周期不準怎么解決?
外置晶振是8M,使用最高的系統時鐘168M,然后使用定時器TIM8作為定時器更新中斷,程序的寄存器PLL_N = 336;PLL_P = 2;PLL_M = 8;要配置一個16KHz,
發表于 03-15 07:28
STM32F407+PCM5102APWR+SD卡內播放wav或mp3音樂如何實現?
,我們需要連接硬件組件。將STM32F407開發板的引腳連接到PCM5102APWR的相應引腳上。這些引腳包括I2S時鐘、I2S數據、I2S位時鐘、I2S幀同步、音頻時鐘和地線。使用適當的連接線將
stm32f407 double類型
STM32F407是意法半導體(STMicroelectronics)推出的一款ARM Cortex-M4內核的微控制器。它是針對智能電動車領域的實時操作、數字信號處理和高性能應用而設計的。在這
stm32f407 LAN8720A速率調整
STM32F407和LAN8720A的速率是非常重要的,尤其是在網絡環境中。下面我將詳細介紹如何通過軟件和硬件來調整速率。 軟件配置: 首先,我們需要在STM32F407上配置以太網控
stm32f407浮點運算速度
STM32F407 是 STMicroelectronics 公司推出的一款基于 ARM Cortex-M4 內核的微控制器。它具有較強的處理能力和豐富的外設資源,在嵌入式系統中得到廣泛應用。該芯片
CKS32F4xx系列MCU SysTick定時器的原理及使用方法
本課將為大家講解CKS32F4xx系列產品的SysTick定時器原理及使用方法。SysTick定時器也叫SysTick滴答定時器,屬于Cor
評論