日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀]搗鼓了幾天,終于點亮led了,那個欣慰啊。。。至于建立工程模板,對于我這種小白來說確實不容易上手,搗鼓了好久,不是忘記添加.c文件,就是忘記加入頭文件的路徑(頭文件的路徑千萬要是英文)。其實模板建立好之后,

搗鼓了幾天,終于點亮led了,那個欣慰啊。。。


至于建立工程模板,對于我這種小白來說確實不容易上手,搗鼓了好久,不是忘記添加.c文件,就是忘記加入頭文件的路徑(頭文件的路徑千萬要是英文)。其實模板建立好之后,只需要編寫兩個文件夾(1)USER,用來編輯主函數(shù)的。(2)HADEWARE(硬件)用來配置相關硬件的,eg:包含led.c led.h 后面要用的話,直接在這里邊調用就行了。


接下來就是led的點亮和蜂鳴器發(fā)出響聲了。

對于led,首先上個電路圖:



板子上有兩個led,DS0和DS1分別接了PB5,PE5,.


重要的是對init(初始化)的配置:


voidLED_Init(void)

{

GPIO_InitTypeDefGPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|

RCC_APB2Periph_GPIOE,ENABLE);//使能PB,PE端口時鐘

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//LED0-->PB.5推挽輸出

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽輸出

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOB,&GPIO_InitStructure);

GPIO_SetBits(GPIOB,GPIO_Pin_5);//PB.5輸出高

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//LED1-->PE.5推挽輸出

GPIO_Init(GPIOE,&GPIO_InitStructure);

GPIO_SetBits(GPIOE,GPIO_Pin_5);/PE.5輸出高

}

要調好GPIO_InitTypeDef結構體中三個成員,傳遞參數(shù)進去完成初始化。

每個HADEWARE中的.c文件對應一個.h文件,再看#include "led.h",這是自己寫的頭文件


#ifndef__LED_H

#define__LED_H

#include"sys.h"

//LED端口定義

#defineLED0PBout(5)//DS0

#defineLED1PEout(5)//DS1

voidLED_Init(void);//初始化

#endif


這段代碼里面最關鍵就是 2 個宏定義:


#defineLED0PBout(5)//DS0

#defineLED1PEout(5)//DS1


這樣調用led更加方便,增加可讀性。

重要的是要將led.c加到HADEWARE這個組里邊:



然后就是主函數(shù)了,挺簡單的:


#include"led.h"

#include"delay.h"

#include"sys.h"

//ALIENTEK戰(zhàn)艦STM32開發(fā)板實驗1

144

//跑馬燈實驗

intmain(void)

{

delay_init();//延時函數(shù)初始化

LED_Init();//初始化與LED連接的硬件接口

while(1)

{LED0=0;

LED1=1;

delay_ms(300);//延時300ms

LED0=1;

LED1=0;

delay_ms(300);//延時300ms

}

}



對于蜂鳴器,電路圖沒看懂,模數(shù)電沒學過,電路也只學到11章,考了83分的渣渣,確實不知道NPN三極管怎么用,只是記住當 PB.8 輸出高電平的時候,蜂鳴器將發(fā)聲, 當 PB.8 輸出低電平的時候,蜂鳴器停止發(fā)聲。


蜂鳴器在HADEWARE中配置beep.c和beep.h和led差不多不再贅述,


#include"beep.h"

151

//初始化PB8為輸出口.并使能這個口的時鐘

//LEDIO初始化

voidBEEP_Init(void)

{

GPIO_InitTypeDefGPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

//使能GPIOB端口時鐘

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;//BEEP-->GPIOB.8端口配置

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽輸出

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//速度為50MHz

GPIO_Init(GPIOB,&GPIO_InitStructure);//根據(jù)參數(shù)初始化GPIOB.8

GPIO_ResetBits(GPIOB,GPIO_Pin_8);//輸出0,關閉蜂鳴器輸出

}


注意要使能相應的時鐘端口


RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);


同樣,beep.h中


#ifndef__BEEP_H

#define__BEEP_H

#include"sys.h"

//蜂鳴器端口定義

#defineBEEPPBout(8)//BEEP,蜂鳴器接口

voidBEEP_Init(void);//初始化

#endif



主函數(shù):


#include"sys.h"

#include"delay.h"

#include"led.h"

#include"beep.h"

//ALIENTEK戰(zhàn)艦STM32開發(fā)板實驗2

//蜂鳴器實驗

intmain(void)

{

delay_init();//延時函數(shù)初始化

LED_Init();//初始化與LED連接的硬件接口

BEEP_Init();//初始化蜂鳴器端口

while(1)

{LED0=0;

BEEP=0;

delay_ms(300);

LED0=1;

BEEP=1;

delay_ms(300);

}

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關閉