STM32點亮閃爍LED燈
阿新 • • 發佈:2017-10-10
eset 程序實現 lan 技術分享 中文 ini target 是個 固件
詳解請看其他博客:
http://www.cnblogs.com/whik/p/6672730.html
http://www.51hei.com/bbs/dpj-38605-1.html
1 /*本程序實現STM開發板上LED燈紅綠藍閃爍*/
2
3
4
5 #include "stm32f10x.h" // 相當於51單片機中的 #include <reg51.h>
6 #include "stm32f10x_gpio.h"
7 /*
8
9 *由於STM32的GPIO工作模式有8種(輸入4種+輸出4種)
10 *在GPIO輸出之前要先對要操作的GPIO進行配置
11 知識點:
12 一個結構體
13 typedef struct//結構體
14 {
15 uint16_t GPIO_Pin;
16 GPIOSpeed_TypeDef GPIO_Speed;
17 GPIOMode_TypeDef GPIO_Mode;
18 }GPIO_InitTypeDef;
19 三個函數:
20 1、GPIO_Init(GPIOB,&GPIO_InitTypeDef);
21 2、GPIO_ResetBits(GPIOB,GPIO_Pin_5); 這裏的意思是給端口5高電平
22 3、GPIO_SetBits(GPIOB,GPIO_Pin_5); 把GPIO引腳設置低電平(紅LED燈亮)
23 */
24
25 //驅動程序:GPIO初始化設置
26 int led_gpio_init_()
27 {
28 GPIO_InitTypeDef GPIO_InitTypeDef;//定義一個結構體變量
29
30 /*使能GPIO的rcc時鐘*/
31 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
32
33 /*配置GPIO引腳*/
34 GPIO_InitTypeDef.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_0|GPIO_Pin_1;//使用操作符可以一次使用多個引腳,端口0是綠色 1是藍色 5是紅色
35 GPIO_InitTypeDef.GPIO_Speed = GPIO_Speed_50MHz;//設置輸出速率50MHz
36 GPIO_InitTypeDef.GPIO_Mode = GPIO_Mode_Out_PP;//推挽輸出
37 /*初始化*/
38 GPIO_Init(GPIOB,&GPIO_InitTypeDef);//參數一選擇GPIO外設(ABCDE)參數二指向GPIO_InitTypeDef的指針
39 }
40
41 //延時函數
42 void delay()
43 {
44 int i = 10000000;
45 while(i--);
46 }
47
48 //主函數
49 int main(void)
50 {
51 led_gpio_init_();//調用GIPO初始化函數
52
53 /*循環給高低電平實現閃爍*/
54 while(1)
55 {
56 GPIO_ResetBits(GPIOB,GPIO_Pin_5);
57 delay();
58 GPIO_SetBits(GPIOB,GPIO_Pin_5);
59 delay();
60
61 GPIO_ResetBits(GPIOB,GPIO_Pin_0);
62 delay();
63 GPIO_SetBits(GPIOB,GPIO_Pin_0);
64 delay();
65
66 GPIO_ResetBits(GPIOB,GPIO_Pin_1);
67 delay();
68 GPIO_SetBits(GPIOB,GPIO_Pin_1);
69 delay();
70 }
71 }
下面賦三個上面用到的函數,原處截圖,出之STM32f10固件庫使用手冊中文版手冊(這是個好東西,要懂得利用!!!以後開發都是根據這個來編程寫函數的)
最後要燒到開發板的,燒程序的軟件過程
STM32點亮閃爍LED燈