日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

歷史上的今天

今天是:2025年08月06日(星期三)

正在發(fā)生

2019年08月06日 | STM32F429的定時(shí)器的使用方法

發(fā)布者:光明2599 來源: eefocus關(guān)鍵字:STM32F429  定時(shí)器  使用方法 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

        電子時(shí)代,硬件在突飛猛進(jìn)的發(fā)展,頻率不斷上升,目前的STM32系列,Cortex M系列,Cortex-M4的頻率已經(jīng)為:180MHz了,基本上與之前的ARM7/9頻率差不多了,還有Cortex-M7,頻率更高,出現(xiàn)了BGA封裝與SDRAM DDR等??磥?a href="http://m.weightgang.cn/zhuanti/W1ibjL" style="color:#4595e6;" target="_blank">處理器越來越大眾化了,物聯(lián)網(wǎng)上的電子設(shè)備聯(lián)網(wǎng),也越來越普及了,硬件成本不斷降低是大勢(shì)所趨,因此,作為一個(gè)電子設(shè)計(jì)人員,還是要不斷的學(xué)習(xí)掌握更多的技術(shù)知識(shí)與基礎(chǔ),從而不會(huì)被社會(huì)很快淘汰。

      最近買了一個(gè)現(xiàn)成的STM32F429 Discovery 的開發(fā)板,想嘗試一下較大點(diǎn)的嵌入式操作系統(tǒng)如RTEMS的移植與應(yīng)用。因?yàn)橛辛薙TM32F103/107的基礎(chǔ),熟悉了硬件與固件庫,STM32F429其實(shí)很容易入手。下面就先定時(shí)器中斷點(diǎn)個(gè)LED試下吧,主要是要組織好工程目錄。


      我是根據(jù)之前一直使用STM32F103的工程目錄改了一下,使用STM32F4XX的最新固件庫V1.6.1,至于為何不去直接操作寄存器,我想,雖然自己是硬件出身,搞寄存器更深入的了解處理器,但是,畢竟寄存器過多,有了庫,可以封裝一下,這樣更可以快速的上手。如果需要查看寄存器,也是可以查的。用固件庫可以少一些錯(cuò)誤,畢竟我們是做應(yīng)用的,首先要學(xué)會(huì)使用CPU來實(shí)現(xiàn)我們要的功能。


       工程目錄如下:這里使用最新的Keil MDK V5.17版本的,STM32F4XX的器件庫等還需要進(jìn)一步下載。這里使用的是自帶的ST-Link下載程序,當(dāng)然使用Jlink也是可以的。

        STM32F429的系統(tǒng)定時(shí)器,原來是系統(tǒng)時(shí)鐘180MHz的8分頻,這個(gè)可以看一下STM32F4XX的參考手冊(cè),里面時(shí)鐘RCC部分的框架介紹。我這里為了定時(shí)為1S,因此計(jì)算了一下。


以下為Tim2.c的主程序。Tim2.h 只是函數(shù)聲明。




/********************     (C) COPYRIGHT 2016     **************************

 * 文件名  :Tim2.c

 * 描述    :定時(shí)器timer2 測(cè)試?yán)?nbsp;      

 * 實(shí)驗(yàn)平臺(tái):STM32F429ZIT6

 * 庫版本  :V1.6.1

 *

 * 編寫日期:2016-05-02

 * 修改日期:

 * 作者    :

****************************************************************************/

#include "Tim2.h"

 

/*

 * 函數(shù)名:TIM2_NVIC_Configuration

 * 描述  :TIM2中斷優(yōu)先級(jí)配置

 * 輸入  :無

 * 輸出  :無

 */

void TIM2_NVIC_Configuration(void)

{

    NVIC_InitTypeDef NVIC_InitStructure; 

    

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); 

    NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;   

    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;

    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

    NVIC_Init(&NVIC_InitStructure);

}

 

 

/*TIM_Period--1000   TIM_Prescaler--(22500-1) -->中斷周期為

  ((1/180000000)*8)*22500*1000=1S    1秒定時(shí)器 */

void TIM2_Configuration(void)

{

    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);

    TIM_DeInit(TIM2);

    TIM_TimeBaseStructure.TIM_Period=1000; /* 自動(dòng)重裝載寄存器周期的值(計(jì)數(shù)值) */

    /* 累計(jì) TIM_Period個(gè)頻率后產(chǎn)生一個(gè)更新或者中斷 */

    TIM_TimeBaseStructure.TIM_Prescaler= (22500 - 1); /* 時(shí)鐘預(yù)分頻數(shù) (180M/8)/22500 */

    TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; /* 采樣分頻 */

    TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; /* 向上計(jì)數(shù)模式 */

    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

    TIM_ClearFlag(TIM2, TIM_FLAG_Update); /* 清除溢出中斷標(biāo)志 */

    TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);

    TIM_Cmd(TIM2, ENABLE); /* 開啟時(shí)鐘 */    

    //RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , DISABLE); /* 先關(guān)閉等待使用 */    

}

 

/*

 * 函數(shù)名:TIM2_Config

 * 描述  :TIM2配置

 * 輸入  :無

 * 輸出  :無

 */

void TIM2_Config(void)

{

  TIM2_Configuration();

TIM2_NVIC_Configuration();

}

 

 

/*******************      (C) COPYRIGHT 2016        *END OF FILE************/





以下為:led.c的文件。



/********************       (C) COPYRIGHT 2014  ***************************

 * 文件名  :led.c

 * 描述    :led 應(yīng)用函數(shù)庫         

 * 實(shí)驗(yàn)平臺(tái):

 * 硬件連接:-----------------------

 *          |   PG14 - LED1(RUN)     |   

 *           ----------------------- 

 * 庫版本  :ST3.5.0

 * 編寫日期:2014-11-04

 * 修改日期:

 * 作者    :

****************************************************************************/

#include "led.h"

 

/*

 * 函數(shù)名:LED_GPIO_Config

 * 描述  :配置LED用到的I/O口

 * 輸入  :無

 * 輸出  :無

 */

void LED_GPIO_Config(void)

{

/*定義一個(gè)GPIO_InitTypeDef類型的結(jié)構(gòu)體*/

GPIO_InitTypeDef GPIO_InitStructure;

 

/*開啟 LED1 的GPIOx的外設(shè)時(shí)鐘*/

RCC_AHB1PeriphClockCmd( RCC_LED1, ENABLE); 

/*選擇要控制的LED1 GPIOx引腳*/    

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_LED1;

/*設(shè)置引腳模式為通用推挽輸出*/

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;   

/*設(shè)置引腳速率為50MHz */   

  GPIO_InitStructure.GPIO_Speed = GPIO_Fast_Speed; 

/* 設(shè)置為推挽輸出模式 */

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

/* 設(shè)置為上拉 */

GPIO_InitStructure.GPIO_PuPd =GPIO_PuPd_UP;

/*調(diào)用庫函數(shù),初始化LED1 的GPIOx*/

  GPIO_Init(GPIO_LED1_PORT, &GPIO_InitStructure);   

 

/*開啟 LED2 的GPIOx的外設(shè)時(shí)鐘*/

RCC_AHB1PeriphClockCmd( RCC_LED2, ENABLE); 

/*選擇要控制的LED2 GPIOx引腳*/    

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_LED2;

/*設(shè)置引腳模式為通用推挽輸出*/

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;   

/*設(shè)置引腳速率為50MHz */   

  GPIO_InitStructure.GPIO_Speed = GPIO_Fast_Speed; 

/* 設(shè)置為推挽輸出模式 */

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

/* 設(shè)置為上拉 */

GPIO_InitStructure.GPIO_PuPd =GPIO_PuPd_UP;

/*調(diào)用庫函數(shù),初始化LED1 的GPIOx*/

  GPIO_Init(GPIO_LED2_PORT, &GPIO_InitStructure);

/* 關(guān)閉LED1 */

//GPIO_ResetBits(GPIO_LED1_PORT, GPIO_Pin_LED1);

//GPIO_ResetBits(GPIO_LED2_PORT, GPIO_Pin_LED2);

}

 

 

 

 

/******************* (C) COPYRIGHT  2014 *****END OF FILE************/





以下為L(zhǎng)ED的引腳定義:led.h




/********************       (C) COPYRIGHT 2014  ***************************

 * 文件名  :led.h

 * 描述    :led 應(yīng)用函數(shù)庫         

 * 實(shí)驗(yàn)平臺(tái):

 * 硬件連接:-----------------------

 *          |   PG14 - LED1(RUN)     |   

 *           ----------------------- 

 * 庫版本  :V1.6.1

 * 編寫日期:2016-04-30

 * 修改日期:

 * 作者    :

****************************************************************************/

#ifndef __LED_H

#define __LED_H

 

#include "stm32f4xx.h"

 

/* the macro definition to trigger the led on or off 

 * 1 - off

 - 0 - on

 */

#define ON  1

#define OFF 0

 

#define RCC_LED1 RCC_AHB1Periph_GPIOG

#define GPIO_LED1_PORT GPIOG

#define GPIO_Pin_LED1 GPIO_Pin_13

 

#define RCC_LED2 RCC_AHB1Periph_GPIOG

#define GPIO_LED2_PORT GPIOG

#define GPIO_Pin_LED2 GPIO_Pin_14

 

//帶參宏,可以像內(nèi)聯(lián)函數(shù)一樣使用

#define LED1(a) if (a)

GPIO_SetBits(GPIO_LED1_PORT,GPIO_Pin_LED1);

else

GPIO_ResetBits(GPIO_LED1_PORT,GPIO_Pin_LED1)

 

#define LED2(a) if (a)

GPIO_SetBits(GPIO_LED2_PORT,GPIO_Pin_LED2);

else

GPIO_ResetBits(GPIO_LED2_PORT,GPIO_Pin_LED2)

 

void LED_GPIO_Config(void);

 

#endif /* __LED_H */




主程序:硬件的初始化。




/********************        (C) COPYRIGHT 2016        **************************

 * 文件名  :main.c

 * 描述    :STM32F429 LED測(cè)試    

 * 實(shí)驗(yàn)平臺(tái): STM32F429ZIT6

 * 庫版本  :V1.6.1

 * 編寫日期:2016-05-02

 * 修改日期:

 * 作者    :

**********************************************************************************/

 

#include "stm32f4xx.h"

//#include "usart1.h"

#include "led.h"

#include "Tim2.h"

 

void Delay(__IO uint32_t nTime)

 

  while(--nTime != 0);

}

 

 

/* 

 * 函數(shù)名:main

 * 描述  : "主機(jī)"的主函數(shù)

 * 輸入  :無

 * 輸出  : 無

 */

int main(void)

{  

LED_GPIO_Config();

TIM2_Config();

LED1(ON);

  LED2(ON);

while(1)

#if 0

Delay(0x2FFFFF);

LED1(OFF);

LED2(OFF);

Delay(0x2FFFFF);

LED1(ON);

LED2(ON);

#endif

}

}

/******************* (C) COPYRIGHT 2014 *****END OF FILE************/



以下為真正的實(shí)現(xiàn)函數(shù):定時(shí)器2中斷函數(shù) stm32f4xx_it.c




/**

  * @brief  This function handles TIM2 Handler.

  * @param  None

  * @retval None

  */

void TIM2_IRQHandler(void)

{

if (TIM_GetITStatus(TIM2,TIM_IT_Update)!=RESET)

{   

TIM_ClearFlag(TIM2, TIM_FLAG_Update);

TIM_ClearITPendingBit(TIM2,TIM_FLAG_Update);

GPIO_WriteBit(GPIO_LED1_PORT,GPIO_Pin_LED1,

(BitAction)(1-GPIO_ReadOutputDataBit(GPIO_LED1_PORT,GPIO_Pin_LED1)));

}

}



      編譯并燒寫,基本上可以看到LED 1S的亮,1S的滅,然后不斷的循環(huán)下去,一般用于程序的運(yùn)行指示燈。


重要的總結(jié):


(1)GPIO的時(shí)鐘,STM32F103的是APB時(shí)鐘,STM32F429為:RCC_AHB1PeriphClockCmd,我開始弄錯(cuò)了,程序不運(yùn)行?。?p>

(2)STM32F429雖然180MHz的主頻,但是系統(tǒng)定時(shí)器的時(shí)鐘為其的8分頻,STM32F103是直接使用的72MHz的主頻,因此在計(jì)算分頻與周期數(shù)時(shí),要使用180MHz/8 的定時(shí)器基本時(shí)鐘去計(jì)算。

關(guān)鍵字:STM32F429  定時(shí)器  使用方法 引用地址:STM32F429的定時(shí)器的使用方法

上一篇:STM32F4xx定時(shí)器
下一篇:stm32f407之基本定時(shí)器TIM6&TIM7(操作寄存器)

推薦閱讀

物聯(lián)網(wǎng)的英文名稱為“Internet of things”,顧名思義,就是“物物相連的網(wǎng)絡(luò)”,它將具備感知、通訊能力的物體相連接,實(shí)現(xiàn)物物之間通訊和信息交換。日常用品因?yàn)檫B接而獲得了新的生命,它們甚至將具有學(xué)習(xí)能力,通過感知用戶的行為而對(duì)自身的行為做出相應(yīng)的調(diào)整。物聯(lián)網(wǎng)時(shí)代,眾多企業(yè)對(duì)傳統(tǒng)產(chǎn)品進(jìn)行智能化改造。合力為科技一直專注于電能計(jì)量領(lǐng)域,...
基本定時(shí)器TIM6和TIM7包括一個(gè)由可編程分頻器驅(qū)動(dòng)的16位自動(dòng)重載計(jì)數(shù)器。它可以用作普通的定時(shí)器,也可以用來驅(qū)動(dòng)DAC。這兩個(gè)定時(shí)器是完全獨(dú)立的,不共享任何資源。更多時(shí)候是與DAC平配合使用。作為定時(shí)器的配置步驟:1. 設(shè)置中斷優(yōu)先級(jí)分組(如果之前沒有設(shè)置),這個(gè)最好一個(gè)程序里只在開頭設(shè)置一次。2. 使能相關(guān)時(shí)鐘。3. ...
據(jù)悉,歐盟委員會(huì)對(duì)谷歌收購可穿戴設(shè)備廠商 Fitbit 展開深入反壟斷調(diào)查。歐洲反壟斷機(jī)構(gòu)稱,這項(xiàng)交易可能進(jìn)一步鞏固谷歌在線廣告業(yè)務(wù)的市場(chǎng)地位,因?yàn)楣雀枘軌蚴占罅康挠脩魯?shù)據(jù)進(jìn)行個(gè)性化的廣告投放。 這一交易的收購金額達(dá) 21 億美元,谷歌初衷是希望通過收購 Fitbit 使得其公司可與蘋果和三星在可穿戴設(shè)備市場(chǎng)抗衡。盡管谷歌上個(gè)月承諾不會(huì)在廣告...
一.OLED簡(jiǎn)介OLED,即有機(jī)發(fā)光二極管(Organic Light-Emitting Diode),又稱為有機(jī)電激光顯示(OrganicElectroluminesence Display, OELD)。 OLED 由于同時(shí)具備自發(fā)光,不需背光源、對(duì)比度高、厚度薄、視角廣、反應(yīng)速度快、可用于撓曲性面板、使用溫度范圍廣、構(gòu)造及制程較簡(jiǎn)單等優(yōu)異之特性,被認(rèn)為是下一代的平面顯示器新興應(yīng)用技術(shù)。模塊特點(diǎn):...

史海拾趣

問答坊 | AI 解惑

UPS配備穩(wěn)壓電源要注意的問題

給UPS電源配備一臺(tái)理想的適用的穩(wěn)壓電源需注意以下幾個(gè)方面: (1).穩(wěn)壓電源必須提供可靠的市電過壓輸入保護(hù)功能。除參數(shù)穩(wěn)壓器在極限工作條件下,可在市電輸入電壓高達(dá)300V時(shí)長(zhǎng)期向負(fù)載提供220V穩(wěn)壓電源外,其它幾種交流穩(wěn)壓電源所允許的市電上限都 ...…

查看全部問答∨

wince內(nèi)核調(diào)用API函數(shù)出問題

在kernel里面調(diào)用API函數(shù)都會(huì)出現(xiàn)連接錯(cuò)誤,請(qǐng)問高手如何解決? hal.lib(cfw.obj) : error LNK2019: unresolved external symbol MapViewOfFile referenced in function OEMInit hal.lib(cfw.obj) : error LNK2019: unresolved external symbol Cr ...…

查看全部問答∨

對(duì)內(nèi)存和總線的一些疑惑

看到書上說  64位機(jī)的內(nèi)存就可以認(rèn)為是無限的(科學(xué)家估計(jì)已知的宇宙有2的70多次的粒子),但64的意思應(yīng)該是說有64個(gè)位吧,但這和內(nèi)存是怎么產(chǎn)生關(guān)系的?看到書上知道64個(gè)位有64個(gè)數(shù)據(jù)線,可是地址線和位數(shù)的關(guān)系就不明顯了,一個(gè)地址用 ...…

查看全部問答∨

全新 C2000™ F2833x 教學(xué) ROM 現(xiàn)已推出

全新 C2000™ F2833x 教學(xué) ROM 現(xiàn)已推出 全新 C2000 F2833x 教學(xué) ROM 是一款綜合指南,旨在向新用戶介紹關(guān)于 C2000 與 F2833x 器件的全部知識(shí)。該教學(xué) ROM 的內(nèi)容結(jié)構(gòu)類似于本科生教材,針對(duì)自學(xué)和輔導(dǎo)教學(xué)進(jìn)行了精心設(shè)計(jì)。     ...…

查看全部問答∨

關(guān)于can通信部分

用兩塊開發(fā)板下的can程序,之間能通信,現(xiàn)在我拿了另外自己設(shè)計(jì)的一塊板,這塊板只要收到can發(fā)送的信號(hào)就會(huì)有反應(yīng),那么原來的開發(fā)板只是發(fā)送CAN信號(hào)就可以,那么我除了修改發(fā)送的ID號(hào)以外,還應(yīng)該修改什么嗎,有什么需要注意的嗎?謝謝啦…

查看全部問答∨

PCB封裝導(dǎo)入3D模型時(shí)候如何有快捷鍵使其很好的對(duì)應(yīng)?

就比如如下圖。本來可以自己拖動(dòng)3D 圖形。放入其自己感覺合適的位置就行。但是總有些誤差。有沒有快捷鍵或者對(duì)應(yīng)的腳快速對(duì)應(yīng)的?…

查看全部問答∨

BB Black 體驗(yàn)結(jié)尾 安裝debian系統(tǒng)

繼之前三篇體驗(yàn)心得 BB Black初體驗(yàn)一 BB Black初體驗(yàn)二 BB Black初體驗(yàn)三 今天花了一整天終于解決把μSD中的debian系統(tǒng)給跑起來了。十分開心,跟大家分享下。 首先,要說明下子,一是μSD卡中運(yùn)行debian,而不是燒寫到eMMC中,珍愛板子,少擦 ...…

查看全部問答∨

TMS320F28335項(xiàng)目開發(fā)記錄8_28335之GPIO引腳

GPIO(General-Purpose Input/Output)——通用輸入/輸出口;       DSP28335 GPIO模塊分為三類IO口:PORTA(0-31),PORTB(32-63),PORTC(64-87) 對(duì)GPIO模塊的設(shè)置主要通過三類寄存器來完成,分別是:控制寄存器、數(shù)據(jù)寄存器、 ...…

查看全部問答∨

初學(xué)者 想了很久也沒想明白的一個(gè)問題

初學(xué)者 想了很久也沒想明白的一個(gè)問題,請(qǐng)大學(xué)指點(diǎn),謝謝! …

查看全部問答∨

高質(zhì)量 C++/C 編程指南

文章寫的很好,非常受用。 …

查看全部問答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved