娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年11月11日(星期一)

正在發生

2020年11月11日 | STM32F10x 學習筆記之SysTick 定時器

發布者:悠然自在 來源: eefocus關鍵字:STM32F10x  SysTick  定時器 手機看文章 掃描二維碼
隨時隨地手機看文章

SysTick 定時器被集成在NVIC中。因此,只要是Cortex-M3 內核的單片機,就都有它。這個學習筆記就用SysTick 定時器來實現走馬燈的功能。


SysTick 定時器非常簡答,只有四個寄存器。這四個寄存器的含義在《Cortex-M3權威指南》那本書中講的非常的清楚,這里不復述了,下面只講講在STM32上SysTick有什么特殊之處。按照CMSIS 標準,用C語言訪問這四個寄存器時使用的寄存器名稱分別如下:


SysTick->CTRL

SysTick->LOAD

SysTick->VAL

SysTick->CALIB


SysTick->CALIB 的值固定為9000,因此,只有當系統嘀嗒時鐘設定為9MHz(HCLK/8的最大值) ,產生1ms 時間基準。


STM32提供了2個時鐘源:


0: AHB/8


1: Processor clock (AHB)


因此,SysTick->CTRL = 7 表示使用處理器時鐘作為時鐘源,使能SysTick,并且使能SysTick中斷。SysTick->CTRL = 3 時頻率降為原來的1/8。 


我的開發板上有四個LED,分別對應的GPIO端口D 的 PD2、PD3、PD4和PD7。


下面是例子程序,仍然先是直接設置寄存器。


#include "stm32f10x.h"  

  

#define RCC_GPIO_LED                                 RCC_APB2Periph_GPIOD  

#define GPIO_LED_PORT                                GPIOD      

#define GPIO_LED1                                    GPIO_Pin_2      

#define GPIO_LED2                                    GPIO_Pin_3      

#define GPIO_LED3                                    GPIO_Pin_4      

#define GPIO_LED4                                    GPIO_Pin_7  

#define GPIO_LED_ALL                                 GPIO_LED1 |GPIO_LED2 |GPIO_LED3 |GPIO_LED4   

  

  

void LED_Spark(void)  

{  

    static int state = 0;  

    switch (state)  

    {  

    case 0:  

        GPIO_SetBits(GPIO_LED_PORT, GPIO_LED_ALL);  

        GPIO_ResetBits(GPIO_LED_PORT, GPIO_LED1);  

        state ++;  

        break;  

    case 1:  

        GPIO_SetBits(GPIO_LED_PORT, GPIO_LED_ALL);  

        GPIO_ResetBits(GPIO_LED_PORT, GPIO_LED2);  

        state ++;  

        break;  

    case 2:  

        GPIO_SetBits(GPIO_LED_PORT, GPIO_LED_ALL);  

        GPIO_ResetBits(GPIO_LED_PORT, GPIO_LED3);  

        state ++;  

        break;  

    case 3:  

        GPIO_SetBits(GPIO_LED_PORT, GPIO_LED_ALL);  

        GPIO_ResetBits(GPIO_LED_PORT, GPIO_LED4);  

        state = 0;  

        break;  

    default:  

        state = 0;  

        break;  

    }  

}  

int main(void)  

{  

    SystemInit();  

    RCC->APB2ENR  |=  0x00000020;  

    GPIOD->CRL = 0x24422244; //PD2 PD3 PD4 PD7 Set to Output mode    

      

    SysTick->LOAD = 24000000/200;  

    SysTick->CTRL = 3;       

  

    for(;;)  

    {  

    }     

}  

  

/** 

 * @brief  This function handles SysTick Handler. 

 * @param  None 

 * @retval None 

 */  

void SysTick_Handler(void)  

{  

    static int count = 0;  

    count ++;  

    if (count == 100)   

    {  

        LED_Spark();  

        count = 0;  

    }  

}  


然后是利用STM32 固件函數庫提供的函數的例子。


[cpp]  view plain copy

#include "stm32f10x.h"  

  

#define RCC_GPIO_LED                                 RCC_APB2Periph_GPIOD  

#define GPIO_LED_PORT                                GPIOD      

#define GPIO_LED1                                    GPIO_Pin_2      

#define GPIO_LED2                                    GPIO_Pin_3      

#define GPIO_LED3                                    GPIO_Pin_4      

#define GPIO_LED4                                    GPIO_Pin_7  

#define GPIO_LED_ALL                                 GPIO_LED1 |GPIO_LED2 |GPIO_LED3 |GPIO_LED4   

  

void LED_Spark(void)  

{  

    static int state = 0;  

    switch (state)  

    {  

    case 0:  

        GPIO_SetBits(GPIO_LED_PORT, GPIO_LED_ALL);  

        GPIO_ResetBits(GPIO_LED_PORT, GPIO_LED1);  

        state ++;  

        break;  

    case 1:  

        GPIO_SetBits(GPIO_LED_PORT, GPIO_LED_ALL);  

        GPIO_ResetBits(GPIO_LED_PORT, GPIO_LED2);  

        state ++;  

        break;  

    case 2:  

        GPIO_SetBits(GPIO_LED_PORT, GPIO_LED_ALL);  

        GPIO_ResetBits(GPIO_LED_PORT, GPIO_LED3);  

        state ++;  

        break;  

    case 3:  

        GPIO_SetBits(GPIO_LED_PORT, GPIO_LED_ALL);  

        GPIO_ResetBits(GPIO_LED_PORT, GPIO_LED4);  

        state = 0;  

        break;  

    default:  

        state = 0;  

        break;  

    }  

}  

int main(void)  

{  

    GPIO_InitTypeDef GPIO_InitStructure;  

    SystemInit();  

    SysTick_Config(SystemCoreClock/100);  

  

    /* Enable GPIOB, GPIOC and AFIO clock */  

    RCC_APB2PeriphClockCmd(RCC_GPIO_LED, ENABLE);  //RCC_APB2Periph_AFIO  

      

    /* LEDs pins configuration */  

    GPIO_InitStructure.GPIO_Pin = GPIO_LED_ALL;  

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;  

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  

    GPIO_Init(GPIO_LED_PORT, &GPIO_InitStructure);  

  

    for(;;)  

    {  

  

    }     

}  

  

/** 

 * @brief  This function handles SysTick Handler. 

 * @param  None 

 * @retval None 

 */  

void SysTick_Handler(void)  

{  

    static int count = 0;  

    count ++;  

    if (count == 100)   

    {  

        LED_Spark();  

        count = 0;  

    }  

}  

需要說明的是,若是用 SysTick_Config 函數來設置SysTick的中斷頻率,時鐘源就不能人為的指定了,這時使用的時鐘源就是內核的頻率。


SystemCoreClock 是個全局變量,它的值就是內核的運行頻率,不過前提要調用 SystemInit() 函數來設置內核的頻率。如果內核的頻率是字節寫寄存器來設置的,SystemCoreClock 的值就不一定對了。

關鍵字:STM32F10x  SysTick  定時器 引用地址:STM32F10x 學習筆記之SysTick 定時器

上一篇:STM32F10x 學習筆記之解決JLink 無法下載程序的問題
下一篇:最后一頁

推薦閱讀

  多個可樂瓶環繞,掃地機器人靈巧地穿梭其中清除雜物,沒有觸碰到任何一個障礙物。這是在上海國家會展中心5號館Neato的展臺前可以看到的場景。   “目前,市場上的掃地機器人大多是靠碰撞的方式探測前方物體,可能會對家具、家電等造成損壞。我們的掃地機器人應用汽車技術,克服了這個缺點。重要的是,它們能夠清理屋內的微小塵埃,非常適合北方居...
技術是中性的,但使用技術的人不是,那么,面臨許多爭議的人臉識別技術該一禁了之還是全面開放?當下應用人臉識別是好是壞?各方爭論不休。據New Atlas報道,美國加利福尼亞州將繼續反對人臉識別技術的使用,并通過了一項新法律:禁止將人臉識別與警方執法記錄儀收集的數據聯系起來。據悉,該法律將于2020年生效,而執法機構的回擊則使得該法律于202...
面板廠今年 10 月合并營收出爐,受到 IC 缺貨影響大小尺寸面板廠業績呈兩樣情走勢。大尺寸面板友達、群創分別月減 1.4%、-5.3%;中小尺寸面板彩晶、凌巨分別月增 1.1%及 0.05%。今天股價全面走升,雙虎放量小漲;彩晶也朝挑戰票面價邁進。 友達(2409)10 月合并營收 257.25 億元,月減 1.4%,年增 28.8%。累計今年前十個月合并營收 2161.46...
e絡盟是Omega全球獨家分銷合作伙伴,全面供應其領先的傳感、控制和監控產品中國上海,2021年11月11日– 安富利旗下全球電子元器件產品與解決方案分銷商e絡盟與Omega簽署分銷協議,宣布成為Omega全球獨家高質量服務分銷商,為全球客戶供貨Omega全系產品組合。客戶現可通過e絡盟選購Omega工廠自動化和工業4.0全系列傳感、控制和監控產品,均有現貨且可快速...

史海拾趣

問答坊 | AI 解惑

功率變換技術發展史呼喚綠色回歸

功率變換技術是按用戶需求改變電能應用方式(改變電能的波形、頻率等)的技術;可以有AC/DC、DC/DC、DC/AC、AC/AC及其相互組合的多種變換。40年代前后,由電磁元件組合形成的各種功率變換過程基本上可實現清潔電源。例如,將交流電動機與直流發 ...…

查看全部問答∨

煩煩煩

我怎么下載不下來附件呢????:Q…

查看全部問答∨

基于DSP的語音識別系統的設計與實現

基于DSP的語音識別系統的設計與實現…

查看全部問答∨

我的做人文化

企業講企業文化,組織講組織文化,做人講的做人文化,以下就是我的個人文化內涵的總結和解釋。我的文化其實很簡單,只有六個字“知足、感恩、惜緣”,但這六個字就讓我悟了32年,直到兩年前才真正總結出來。知足是對現實的物質和環境沒有抱怨,但不 ...…

查看全部問答∨

工信部首次明確3G牌照歸屬 年底或明年初發照

工信部首次明確3G牌照歸屬 年底或明年初發照 http://tech.163.com/08/1212/11/4SV7EQOV000915BE.html           工業和信息化部部長李毅中今日稱,根據綜合考慮,我們將通過一定的程序在年底或明年年初發放3G牌照 ...…

查看全部問答∨

ARM初學者求方法

     我之前主要從事MSP430單片機的開發,51和AVR也玩過,但對ARM一點都不懂,現在想開始自學ARM,并且手上有一套TI公司的LM3S3748開發板,在此想請教一下玩ARM的高手指教一下入門的方法,推薦一本適合我的書,或者其他什么資料的 ...…

查看全部問答∨

stm32定貨周期?

                                 剛才打電話給微芯力科,全系列芯片定貨周期都10周?象我們小公司沒有那么好的計劃,都不敢用了.…

查看全部問答∨

STM32外部RAM存儲數據JLINK無法調試

我講外部RAM存儲數據,內部RAM放堆棧,程序很簡單,就是將外部ram復制,同時讀取,讀取后用串口發出來,我用JLINK調試,程序始終停在串口等待處,查看賦值也不對。我手動復位板子,不用JLINK帶,STM32能夠對外部RAM賦值,并且能夠從串口輸出來 ...…

查看全部問答∨

ccs中怎么把graphical display的圖像導出來

如題   謝謝了   不是截圖的那種  …

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 凉山| 通州区| 南宁市| 资阳市| 砚山县| 南陵县| 醴陵市| 呼图壁县| 绿春县| 宝坻区| 昔阳县| 富阳市| 武山县| 峨眉山市| 嘉禾县| 通海县| 交口县| 阳春市| 施甸县| 城口县| 建平县| 威信县| 鄂州市| 习水县| 搜索| 芷江| 古蔺县| 德州市| 柳林县| 宁德市| 南部县| 上犹县| 子长县| 和林格尔县| 锡林浩特市| 瑞昌市| 墨江| 合江县| 霍州市| 蒲城县| 元朗区|