從51開始,單片機玩了很長時間了,有51,PIC,AVR等等,早就想跟潮流玩玩ARM,但一直沒有開始,原因-----不知道玩了ARM可以做什么(對我自己而言)。如果為學習而學習,肯定學不好。然后cortex-m3出來了,據說,這東西可以替代單片機,于是馬上開始關注。也在第一時間開始學習,可惜一開始就有點站錯了隊,選錯了型(仍是對我自己而言)。我希望這種芯片應該是滿大街都是,隨便哪里都可以買得到,但我選的第一種顯然做不到。為此,大概浪費了一年多時間吧,現在,回到對我來說是正確的道路上來啦,邊學邊寫點東西。
這里寫的是我的學習的過程,顯然,很多時候會是不全面的,不系統的,感悟式的,甚至有時會是錯誤的,有些做法會是不專業的。那么,為什么我還要寫呢?這是一個有趣的問題,它甚至涉及到博客為什么要存在的問題。顯然,博客里面的寫的東西,其正確性、權威性大多沒法和書比,可為什么博客會存在呢?理由很多,我非專家,只說我的感慨。
我們讀武俠小說,總會有一些創出獨門功夫的宗師,功夫極高,然后他的弟子則基本上無法超越他。我在想,這位宗師在創造他自己的獨門功夫時,必然會有很多的次的曲折、彎路、甚至失敗,會浪費他的很多時間,而他教給弟子時,則已去掉了這些曲折和彎路,當然更不會把失敗教給弟子,按理說,效率應該更高,可是沒用,弟子大都不如師。為什么呢?也許知識本身并不是最重要的,獲取知識的過程才是最重要的?也許所謂的知識,并不僅僅是一條條的結論,而是附帶著很多說不清道不明的東西?如植物的根,一條主根上必帶有大量的小小的觸須?
閑話多了些,就權當前言了。下面準備開始。
詳情參閱:STM32單片機小Tips(1):充分準備與開始編程
勉勉強強看懂一行程序
繼續學習中,先把開發板自帶一個例子做了些精簡,以免看得嚇人。。。。
就是這個,讓PORTD上接的4個LED分別點亮。
開始研究代碼
int main(void)
{
Init_All_Periph();
。。。。。。
看到這一行,開始跟蹤,于是又看到了下面的內容
void Init_All_Periph(void)
{
RCC_Configuration();
。。。。。。
繼續跟蹤
void RCC_Configuration(void)
{
SystemInit();
。。。。。。
這行代碼在system_stm32f10x.c中找到了。
void SystemInit (void)
{
/* Reset the RCC clock configuration to the default reset state(for debug purpose) */
/* Set HSION bit */
RCC-》CR |= (uint32_t)0x00000001;
/* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */
#ifndef STM32F10X_CL
RCC-》CFGR &= (uint32_t)0xF8FF0000;
#else
RCC-》CFGR &= (uint32_t)0xF0FF0000;
#endif /* STM32F10X_CL */
/* Reset HSEON, CSSON and PLLON bits */
RCC-》CR &= (uint32_t)0xFEF6FFFF;
/* Reset HSEBYP bit */
RCC-》CR &= (uint32_t)0xFFFBFFFF;
/* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */
RCC-》CFGR &= (uint32_t)0xFF80FFFF;
#ifndef STM32F10X_CL
/* Disable all interrupts and clear pending bits */
RCC-》CIR = 0x009F0000;
#else
/* Reset PLL2ON and PLL3ON bits */
RCC-》CR &= (uint32_t)0xEBFFFFFF;
/* Disable all interrupts and clear pending bits */
RCC-》CIR = 0x00FF0000;
/* Reset CFGR2 register */
RCC-》CFGR2 = 0x00000000;
#endif /* STM32F10X_CL */
/* Configure the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers */
/* Configure the Flash Latency cycles and enable prefetch buffer */
SetSysClock();
}
這一長串的又是什么,如何來用呢?看來,偷懶是不成的了,只能回過頭去研究STM32的時鐘構成了。
相當的復雜。
評論
查看更多