⑴ STM32單片機庫函數問題
一般不行
必須要調用stm32f10x_rcc.c,SystemInit()只是將系統的時鍾幫你配置好,其實你也可以不調用它,你可以自己調用stm32f10x_rcc.c中的函數自己來配置,不過這樣的話就要記得配置好flash的等待周期,兩種方式之間沒什麼太大區別。另外一般你會需要開啟外設的時鍾或者其他一些功能就需要調用stm32f10x_rcc.c中的函數。
還有如果你使用的是3.2.0以上的庫的話,SystemInit()其實不需要你自己調用,startup_stm32f10x_XX.s中有這樣的代碼
Reset_Handler
LDR R0, =SystemInit
意思就是上電(Reset)後執行的第一段代碼就是SystemInit(),這是在main函數之前調用的,所以不需你自己再去調用了
SystemInit()在調用的時候要注意你自己板子上的外部晶振是多少,默認是25MHZ,如果你板子上的晶振的不是這么大的話,你需要修改stm32f10x.h裡面的HSE_Value
補充:system_stm32f10x.c里的函數的功能僅僅是完成系統時鍾的配置,如果你不使用任何外設或者用系統時鍾做其他用的話是可以不用stm32f10x_rcc.c
stm32f10x_rcc.c中的函數不僅僅是完成分頻倍頻的功能,還有開啟外設時鍾,檢測RCC中斷,配置RTC時鍾等功能,不是單單配置一個系統時鍾那麼簡單
⑵ 51單片機c語言里 _nop_ 函數怎麼用
在單片機c語言中直接調用庫函數即可,具體如下:
#include<intrins.h> // 聲明了void_nop_(void);
_nop_(); // 產生一條NOP指令。
該函數的作用:對於延時很短的,要求在us級的,採用「_nop_」函數,這個函數相當信亂游匯編NOP指令,延時幾微秒。NOP指令為單周期指令,可由晶振頻率算出延時時間,對於12M晶振,延時1uS。
⑶ 單片機C語言編程,要使用C語言自帶的庫函數,使用哪個宏包含命令
使用#include調用庫函數。
C51語言的編譯器中包含有豐富的庫函數,使用庫函數可以大大簡化用戶程序設計的工作量,提高編程效率。每個庫函數都在相應的頭文件中給出了函數原型聲明,在使用時,必須在源程序的開始處使用預處理命令#include將有關的頭文件包含進來。
C51庫函數中類型的選擇考慮到了8051單片機的結構特性,用戶在自己的應用程序中應盡可能地使用最小的數據類型,以最大限度地發揮8051單片機的性能,同時可減少應用程序的代碼長度。
單片機c語言編程是基於C語言的單片機編程。單片機的C語言採用C51編譯器(簡稱C51)。由C51產生的目標代碼短,運行速度高,存儲空間小,符合C語言的ANSI標准,生成的代碼遵循Intel目標文件格式,而且可與A51匯編語言PL/M51語言目標代碼混合使用。51單片機支持三種高級語言,即PL/M,C和BASIC。C語言是一種通用的程序設計語言,其代碼率高,數據類型及運算符豐富,並具有良好的程序結構,適用於各種應用的程序設計,是使用較廣的單片機編程語言。