mcu在開發板原理圖的第二頁,led在開發板原理圖的第三頁
由圖可知,pf9 ,pf10 若輸出低電平則燈亮,高電平則燈滅
選推挽輸出
使能io口時鐘。
呼叫函式rcc_ahb1periphclockcmd();不同的外設呼叫的時鐘使能函式可能不一樣
初始化io口模式。呼叫函式gpio_init();
操作io口,輸出高低電平。
gpio_setbits();
gpio_resetbits();
1.刪掉fwlib中不用的原始檔(以提高編譯速度),保留misc,rcc , gpio , uart
2.新建hardward資料夾,其中新建led資料夾,其中新建led.c 和led.h,分別引入工程
3.led.h中:
#ifndef __led_h
#define __led_h
void led_init(void);
#endif
4.led.c中,每個函式用gotodefinition檢視定義
怎麼寫函式裡的引數呢?找到assert_param 函式
assert_param(is_rcc_ahb1_clock_periph(rcc_ahb1periph));
其中最裡層的括號裡會出現引數,外面用乙個巨集包著
對包著引數的那個巨集,(如下面的is_rcc_ahb1_clock_periph)goto definition,可以看到其定義
1)如果直接是a||b另一種情況:例如
#define is_functional_state(state) (((state) ==disable) || ((state) == enable))
那麼可選引數即為a和b
2)如果不是那樣,而是比較複雜,裡面直接一些十六進製制,就往它上面看,基本就是可選值例如
#define is_rcc_ahb1_clock_periph(periph) ((((periph) & 0x810be800) == 0x00) && ((periph) != 0x00))
如圖這些define的內容就是該引數的可選項(從注釋也可以看出)
#include "stm32f4xx.h"
#include "led.h"
#include "delay.h"
int main(void)
}
#include "led.h"
#include "stm32f4xx.h" //韌體庫
void led_init(void)
{ gpio_inittypedef gpio_initstructure;
//1.使能gpio的時鐘
//fwlib , stm32f4xx_rcc.h
rcc_ahb1periphclockcmd(rcc_ahb1periph_gpiof,enable); //時鐘使能函式
初始化gpio_initstructure.gpio_pin=gpio_pin_9|gpio_pin_10;
gpio_initstructure.gpio_mode=gpio_mode_out;
gpio_initstructure.gpio_otype=gpio_otype_pp;//推挽輸出(強高低電平)
gpio_initstructure.gpio_pupd=gpio_pupd_up;//上拉 (預設情況下高電平,led不亮)
gpio_initstructure.gpio_speed=gpio_speed_50mhz;
gpio_init(gpiof,&gpio_initstructure);
//3.置為高電平(預設不亮)
gpio_setbits(gpiof,gpio_pin_9|gpio_pin_10);
#ifndef __led_h
#define __led_h
void led_init(void);
#endif
STM32F407 跑馬燈實驗
1 庫函式版本呼叫的函式有哪些?對應的原始檔 標頭檔案是哪個?庫函式 原始檔 標頭檔案 rcc ahb1periphclockcmd rcc ahb1periph gpiof,enable stm32f4xx rcc.c stm32f4xx rcc.h gpio init gpiof,gpio in...
STM32F407 多功能跑馬燈
自律即自強!1 完成多功能跑馬燈專案。2 預習中斷。多功能跑馬燈 include sys.h include delay.h include usart.h include led.h include beep.h include key.h alientek 探索者stm32f407開發板 實驗3...
STM32F407 串列埠顯示跑馬燈狀態
main.c include sys.h include delay.h include usart.h include led.h include beep.h include key.h include exti.h extern u8 onoff,dir,speed,change,flag e...