欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32F407入門開發(fā): 滴答定時器配置

DS小龍哥-嵌入式技術(shù) ? 來源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2022-05-30 09:17 ? 次閱讀

第一章 介紹滴答定時器的章節(jié)

滴答定時器和普通的定時器功能其實差不多,都是定時器;滴答定時器是24位的,單次計時的時間更加長,平時滴答定時器主要作為系統(tǒng)心跳使用。 比如:RTOSUCOS實時操作系統(tǒng)的心跳值、LWIP、UIP網(wǎng)絡(luò)協(xié)議棧的心跳值等等。 如果項目里沒有操作系統(tǒng)這些系統(tǒng)庫,可以將滴答定時器用來作為延時函數(shù)的時間基準(zhǔn),方便給項目提供精確的延時;下面介紹了滴答定時器的基本使用之后,也會介紹滴答定時器作為延時函數(shù)的封裝方法,提供高精度的延時函數(shù)。

STM32F407參考手冊中第10章介紹了滴答定時器的校準(zhǔn)值。

M4 權(quán)威指南介紹滴答定時器的章節(jié),M3 權(quán)威指南中與M4 權(quán)威指南中的介紹一樣。


第二章 滴答定時器的示例代碼

在sys.c文件中增加滴答定時器的代碼,測試定時效果

下面的例子代碼是演示滴答定時器的使用效果,直接設(shè)置了一個固定的超時時間,時間到達之后就會進入到中斷,改變LED狀態(tài)。

/*
函數(shù)功能:滴答時鐘初始化配置
注意: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計數(shù)值
	SysTick->CTRL|=1<<0;     //SysTick 定時器的使能位
}

/*
函數(shù)功能:滴答時鐘中斷服務(wù)函數(shù)
*/
void SysTick_Handler(void)
{
  LED0=!LED0;
  LED1=!LED1;
}
復(fù)制代碼

第三章 使用滴答定時器編寫延時函數(shù)

3.1 在delay.c文件增加以下代碼

/*
函數(shù)功能:延時函數(shù)初始化
*/
void DelayInit(void)
{
	SysTick->CTRL&=~(1<<2);  //選擇外部時鐘源	
	SysTick->CTRL&=~(1<<1);  //關(guān)閉中斷
}


/*
函數(shù)功能:延時毫秒的函數(shù)
函數(shù)參數(shù):毫秒的時間
*/
void DelayMs(u32 time)
{
	u32 stat;
	SysTick->LOAD=18750*time; //重裝載寄存器,最大24位,最大值:16777215
	SysTick->VAL=0; 			   //清除CNT計數(shù)值
	SysTick->CTRL|=1<<0;     //SysTick 定時器的使能位
	do
	{
           stat=SysTick->CTRL;  //獲取狀態(tài)位
	}while((!(stat&1<<16))&&(stat&1<<0));
	SysTick->CTRL=0x0; 
}


/*
函數(shù)功能:延時微秒的函數(shù)
函數(shù)參數(shù):毫秒的時間
*/
void DelayUs(u32 time)
{
	u32 stat;
	SysTick->LOAD=18.750*time; //重裝載寄存器,最大24位,最大值:16777215
	SysTick->VAL=0; 			   //清除CNT計數(shù)值
	SysTick->CTRL|=1<<0;     //SysTick 定時器的使能位
	do
	{
			stat=SysTick->CTRL;  //獲取狀態(tài)位
	}while((!(stat&1<<16))&&(stat&1<<0));
	SysTick->CTRL=0x0; 
}
復(fù)制代碼

3.2 閃光燈示例

在主函數(shù)里加上邏輯代碼,使用剛才編寫的延時函數(shù)完成延時,實現(xiàn)閃光燈效果。

#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;
	}
}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6043

    文章

    44624

    瀏覽量

    638910
  • STM32
    +關(guān)注

    關(guān)注

    2272

    文章

    10926

    瀏覽量

    357757
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3256

    瀏覽量

    115435
  • STM32F407
    +關(guān)注

    關(guān)注

    15

    文章

    188

    瀏覽量

    29671
收藏 人收藏

    評論

    相關(guān)推薦

    STM32F407和ADS8684進行SPI通信,寄存怎么配置?

    通過STM32F407和ADS8684進行SPI通信,閱讀了ADS8684的手冊,配置STM32F407為主,CPOL為0,CPHA為1,這樣對嗎? 配置好后應(yīng)該先設(shè)置ADS8684
    發(fā)表于 12-20 06:25

    STM32F407 MCU使用SD NAND?不斷電初始化失效解決方案

    STM32F407微控制單元(MCU)與SD NAND的結(jié)合提供了強大的存儲解決方案。然而,不斷電初始化失效問題可能會導(dǎo)致系統(tǒng)穩(wěn)定性和數(shù)據(jù)完整性受損。我們將STM32F407與SD NAND集成時可能遇到的初始化問題,并提供專
    的頭像 發(fā)表于 12-11 10:51 ?462次閱讀
    <b class='flag-5'>STM32F407</b> MCU使用SD NAND?不斷電初始化失效解決方案

    STM32F407作USB host驅(qū)動聲卡,USB就會出錯的原因?

    我用STM32F407 作USB host,配置為FS。用它接聲卡。如果STM32F407 單向給 聲卡傳送音頻,輸出聲音正常?;蛘?407單向接收聲卡的音頻,工作也正常。但是同時發(fā)送
    發(fā)表于 07-04 06:56

    STM32F407如何能直接出42MHz的方波?

    2、用另外一臺F407定時中斷做時鐘源,發(fā)現(xiàn)頻率最高可以到1.3MHz,不能滿足需求 3、買了LM311的電壓比較,在路上,準(zhǔn)備把MCO1輸出的42MHz的正弦波變成方波 就是想問問老哥們,還有沒有什么方法沒有被
    發(fā)表于 05-30 07:31

    求助,使用STM32F407定時器問題求解

    最近在使用STM32F407定時器,遇到一個詭異的問題。 我用TIM2做PWM波形輸出,用了一個OC腳。中斷的配置是只有更新事件產(chǎn)生中斷。 在每個更新事件產(chǎn)生時,UIF位由硬件置位,系統(tǒng)進入中斷
    發(fā)表于 05-17 08:25

    stm32f407是否可以采用別的I/O口,與TFT液晶實現(xiàn)連接???

    新手求助:stm32f407與TFT液晶接口時,TFT液晶為并口(D0~D15等),stm32f407芯片必須使用FSMC—D0~FSMC—D15等接口與其連接嗎?看了一些開發(fā)板的原理圖,好像
    發(fā)表于 05-17 07:39

    使用STM32F407正點原子的開發(fā)板作為客戶端,電腦作為服務(wù)端時程序總是死在接收函數(shù)上是為什么?

    生成的工程可以ping通,使用STM32F407正點原子的開發(fā)板作為客戶端,電腦作為服務(wù)端時程序總是死在接收函數(shù)上,把接收函數(shù)屏蔽后程序正常也能于服務(wù)連接上。請大神指教,是否是哪里
    發(fā)表于 04-29 06:54

    把MATLAB中的模型下載到STM32F407中跑,TIM1的中斷是灰色的,無法選擇是什么問題?

    用ST官網(wǎng)提供的stm32-mat_target插件,希望可以直接把MATLAB中的模型下載到STM32F407中跑,在試驗例程中用定時器TIM1控制LED時,TIM1的中斷是灰色的,無法選擇,這是什么問題?
    發(fā)表于 04-28 07:19

    STM32F407以太網(wǎng)突然延時變高導(dǎo)致死機的原因?怎么解決?

    MCU芯片采用STM32F407,以太網(wǎng)芯片采用DP83848,STM32F407作為服務(wù)端,PC作為客戶端訪問,跑的modbus協(xié)議,該開始通訊時,一切正常,PING延時也是<1ms
    發(fā)表于 04-28 06:37

    STM32F407系列使用HSI時鐘后,PLL最高能配置到多少?

    最近在使用STM32F407系列,當(dāng)使用HSI時鐘后,PLL最高只能配置到42MHz,找了很多文檔也沒有介紹這方面的資料。如果超過42Mhz,就會發(fā)生跑飛的情況。我也試過配置到48MHz,也是會跑飛
    發(fā)表于 04-26 07:49

    請問STM32F407在電機驅(qū)動應(yīng)用中如何正確關(guān)閉高級定時器的PWM?

    我們在開發(fā)一款電機驅(qū)動,使用了STM32F407的高級定時器1產(chǎn)生的PWM驅(qū)動H橋。 在驅(qū)動檢測到過流等故障情況下,需要立即關(guān)斷PWM。
    發(fā)表于 04-18 07:47

    STM32F407采用SFSBU BOOT0與BOOT1怎么配置啟動方式?有什么區(qū)別?

    STM32F407 采用SFSBU 官方安全模式的的啟動boot, 分別2個應(yīng)用空間,用于存儲升級的新應(yīng)用的和運行應(yīng)用,boot0 與boot1 這塊選擇具體怎么配置
    發(fā)表于 04-01 06:50

    STM32F407定時器9和10怎么設(shè)置為主從關(guān)系?

    中關(guān)閉主定時器的PWM輸出,達到精確的位移控制的目的,這樣只用進一次中斷,而不用每次進中斷里進行計數(shù)。 我用通用定時器2-5可以實現(xiàn); 但是9-14就實現(xiàn)不了了; tid=46003 發(fā)現(xiàn)這個解答挺像回事的,但是stm32f4
    發(fā)表于 03-28 06:02

    STM32F407 3線SPI如何配置?

    現(xiàn)在需要3線SPI進行通信,也就是從機的MOSI和MISO為一根線。 我在參考手冊看到,STM32F407可以滿足雙向數(shù)據(jù)線 請問ST官方有沒有peripheral libraries或者例程可供參考?
    發(fā)表于 03-26 07:16

    使用STM32F407定時器中斷周期不準(zhǔn)怎么解決?

    外置晶振是8M,使用最高的系統(tǒng)時鐘168M,然后使用定時器TIM8作為定時器更新中斷,程序的寄存PLL_N = 336;PLL_P = 2;PLL_M = 8;要配置一個16KHz,
    發(fā)表于 03-15 07:28