stm32之路 三 約好那一刻

2021-06-08 14:20:10 字數 1427 閱讀 2896

萬事開頭難,前兩天,我們已經建好了工程,寫了點亮led的程式,是不是感覺stm32也沒想象中那麼難?接下來,go on!

開發板上的led在閃爍著,間隔是多長時間呢?能不能讓它像鐘錶一樣,一秒閃一下呢?答案是肯定的。今天我的目標,就是教它「讀」秒~

還是上乙個函式,功能都有了,就是缺個精確的延時。說到「精確的延時」,大家首先想到的一定是定時器。對!就是它。翻開stm32的參考資料(cortex-m3技術參考手冊、cortex-m3權威指南、stm32f10***資料手冊,這些都可以),有個systick,就用它吧。一般人們把它叫做「系統節拍時鐘」,或者叫「滴答定時器」,因為它可以可靠的提供乙個精確的時鐘。本質上說,systick是個24位的計數器,計數完成,就中斷了,然後清零,過載,又計數。下邊還是通過程式來看,這個傢伙到底怎麼用的。

void systick_configuration(void)

systick_countercmd(systick_counter_disable);            //systick計數失能;

systick_clksourceconfig(systick_clksource_hclk_div8);//systick時鐘為hclk8分頻;

systick_countercmd(systick_counter_clear);        //清除systick計數器;

systick_setreload(9000*1000);                              //設定systick過載值;

根據上次的程式,可以輕易的推測void systick_configuration(void)是systick的配置函式,而且,要在工程lib檔案中新增stm32f10x_systick.c。裡面的設定和我們以前用定時器很相似,先失能(遮蔽中斷),在清除計數器(清除中斷標誌位),然後設定計數值。(這麼說我都覺得有些牽強···)計數值怎麼算呢?這要根據時鐘源了。前面的rcc_configuration()函式設定hclk為72mhz,上面的函式中,systick時鐘源是hclk8分頻,也就是f=9mhz,那麼,t=1/9m,1s=t*n,所以過載值n=9000000。還要注意一下,systick是cortex-m3的「內設」,不需要用rcc來開啟時鐘。

這個只是初始化配置,用的時候有是怎樣呢?

void delay_second(void)

systick_countercmd(systick_counter_enable);      //systick使能;

while(systick_getflagstatus(systick_flag_count)== 0); //等待systick計數至0;

systick_countercmd(systick_counter_disable);     //systick計數失能;

systick_countercmd(systick_counter_clear); //清除systick計數器;

那一刻的綻放

那一刻的綻放 青色的湖面倒映著碧藍的天空,在雪山山尖的那抹白色的映襯下顯的愈發平靜,甚至有些慵懶。這其中孕育著美麗,這美麗則因中國綻放。青海湖波光粼粼的湖面與天空透明的藍色交織著,呈現出一種好看的微青,延伸至地平線。展翅的鳥兒與雲朵點綴在其間,使其藍得更加澄澈。然而這一路的好心情在到了我們要住下的民...

那一刻,真想擁她入懷

廈門 晴 2005年8月1日 於8月3日為8月1日補上一筆,今天應該是個可以紀念的日子。同家人在廈門玩了一天,其實旅遊對我來說應該就是一種心情,到 應該都差不多,重要的自己是否真正得到了旅遊的快樂,大部分時間都是很可惜的,因為至今我還沒有發現旅遊的快樂,自己更傾向的是那種徒步走過,真真正正融入到各地...

幸福只是在那一刻

幸福只是在那一刻,大家都知道筆者很喜歡寫文章記錄往事。幸福我們相聚的時刻。因為這樣的機會很少,所以我們要珍惜。上次網路營銷大會,我遇到了我的前同事,心裡還是很激動的。經理請我吃了飯,激動的不是飯而是對我的那份情。我是乙個不怎麼會交流的人,懷念曾經一起和你們的日子,懷念你照顧我的日子,這些是我永遠不會...