久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> STM32 >> 瀏覽文章

STM32流水燈實驗

作者:未知   來源:不詳   點擊數:  更新時間:2014年06月17日   【字體:

流水燈實驗是所有硬件編程的“”Hello world!“程序,成功下載運行一個流水燈說明你已經走進了STM32的世界。下面我們一步一步的來做實驗。

首先,在上一節的模板基礎上建立一個新的Keil工程,取名為LED。打開main.c函數,可以直接在這里寫代碼,當然也可以重新建立.c文件,這里我們直接在main文件中寫程序。第一步,也是最重要的一步就是配置作為輸出的IO口,代碼如下:
GPIO_InitTypeDef GPIO_Structure; //定義GPIO結構體
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE); //使能PEIO口的時鐘

GPIO_Structure.GPIO_Pin = GPIO_Pin_9; //結構體引腳為PE9
GPIO_Structure.GPIO_Mode = GPIO_Mode_Out_PP; //設置為推挽輸出
GPIO_Structure.GPIO_Speed = GPIO_Speed_50MHz; //IO口翻轉速度設置為50MHz
GPIO_Init(GPIOE,&GPIO_Structure); //初始化PE9引腳
這里只設置了一個PE9引腳,其他引腳的設置類似,只需改變GPIO_Pin_x然后初始化即可,如下:
GPIO_Structure.GPIO_Pin = GPIO_Pin_11;
 GPIO_Init(GPIOE,&GPIO_Structure);
GPIO_Structure.GPIO_Pin = GPIO_Pin_13; 
GPIO_Init(GPIOE,&GPIO_Structure);
 GPIO_Structure.GPIO_Pin = GPIO_Pin_15; 
 GPIO_Init(GPIOE,&GPIO_Structure);
將以上初始化IO口的代碼封裝成一個函數命名為LED_init():
void Led_init(void)
{
GPIO_InitTypeDef GPIO_Structure; //定義GPIO結構體
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE); //使能PEIO口的時鐘

GPIO_Structure.GPIO_Pin = GPIO_Pin_9; //結構體引腳為PE9
GPIO_Structure.GPIO_Mode = GPIO_Mode_Out_PP; //設置為推挽輸出
GPIO_Structure.GPIO_Speed = GPIO_Speed_50MHz; //IO口翻轉速度設置為50MHz
GPIO_Init(GPIOE,&GPIO_Structure); //初始化PE9引腳

GPIO_Structure.GPIO_Pin = GPIO_Pin_11;
GPIO_Init(GPIOE,&GPIO_Structure);

GPIO_Structure.GPIO_Pin = GPIO_Pin_13;
GPIO_Init(GPIOE,&GPIO_Structure);

GPIO_Structure.GPIO_Pin = GPIO_Pin_15;
GPIO_Init(GPIOE,&GPIO_Structure);
}
然后需要一個延時函數,控制LED等亮與滅的時間間隔:
void Delay(int n)
{
while(n--)
; //學過51的人都明白
}
至此,驅動LED的程序代碼基本已經完成,為了更方便的調用,我們定義一些宏:
#define LED1_ON() GPIO_SetBits(GPIOE,GPIO_Pin_13)   //LED1置位
#define LED1_OFF() GPIO_ResetBits(GPIOE,GPIO_Pin_13)   //LED1復位

#define LED2_ON() GPIO_SetBits(GPIOE,GPIO_Pin_9)
#define LED2_OFF() GPIO_ResetBits(GPIOE,GPIO_Pin_9)

#define LED3_ON() GPIO_SetBits(GPIOE,GPIO_Pin_15)
#define LED3_OFF() GPIO_ResetBits(GPIOE,GPIO_Pin_15)

#define LED4_ON() GPIO_SetBits(GPIOE,GPIO_Pin_11)
#define LED4_OFF() GPIO_ResetBits(GPIOE,GPIO_Pin_11)
好了,要LED等怎么閃爍就看你怎么調用這些宏了,實現流水燈的調用如下:
int main()
{
//SystemInit();
Led_init(); //初始化LED等所用的IO口
while(1)
{
LED1_ON();LED2_OFF();LED3_OFF();LED4_OFF();
Delay(0x8ffff);
LED1_OFF();LED2_ON();LED3_OFF();LED4_OFF();
Delay(0x8ffff);
LED1_OFF();LED2_OFF();LED3_ON();LED4_OFF();
Delay(0x8ffff);
LED1_OFF();LED2_OFF();LED3_OFF();LED4_ON();
Delay(0x8ffff);
}
}
對于SystemInit()函數,在啟動代碼中已經調用過,那么在main函數中無需再調用,如果使用的固件庫版本比較低,啟動代碼中沒有調用,那么main函數中就需要調用了。好了,我們看一下運行的效果怎么樣:
關閉窗口

相關文章

主站蜘蛛池模板: 国产a视频| 久久大陆 | 日韩精品免费播放 | 国产精品美女在线观看 | 欧美天堂在线观看 | 精品少妇一区二区三区日产乱码 | 999久久久久久久 | 欧美一区二区三区电影 | 99国产精品久久久久久久 | 中文久久| 亚洲精品短视频 | 欧美看片 | 国产日韩欧美综合 | 中文字幕一区二区三区乱码图片 | 日本三级电影在线观看视频 | 97色在线观看免费视频 | 成人妇女免费播放久久久 | 狠狠av| 九九久久久 | 欧美一区二区在线观看 | 久久久久一区 | 国产精品久久毛片av大全日韩 | 日韩欧美三级电影在线观看 | 91精品午夜窝窝看片 | 金莲网 | 国产三区在线观看视频 | 日韩字幕一区 | 福利在线观看 | 色综合中文 | 久久香蕉网 | 国产高清在线 | 99精品国产一区二区三区 | 91亚洲精品在线观看 | 一区二区三区精品 | 国产一级片在线播放 | 伊人久久大香线 | 精品久久久999 | 午夜爽爽爽男女免费观看 | 青青草社区 | 91精品国产综合久久久动漫日韩 | 国产丝袜一区二区三区免费视频 |