新しいプロジェクトのハードウェアフォルダの下に、新しいフォルダを作成し、キーフォルダがそれぞれ主導し、新しいled.cのkey.cは、適切なフォルダに保存されています。
[保存led.hとkey.hに二つの新しいテキストが保存され、キーフォルダを導きました。
keil5は、それぞれのヘッダ(追加、.Cファイルを追加した
.hファイル)を
プログラミングを開始するために
LED部を:
コアコード内部led.h。
#define LED0 PAout(6) // DS0,定义LED0的IO口,PAout(6)指 GPIOA_Pin_6 输出模式
#define LED1 PAout(7) // DS1
void LED_Init(void);//初始化
初期設定はIOポートを率い:
周辺機器の多くは、このようなGPIOピンを設定すると、次のような初期化GPIOをしている、モード、スピード、otypeは、ドロップダウン
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//使能GPIOA的时钟,首要操作!!
//GPIOA6,A7的初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;//位置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//模式,这里是输出模式
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//输出模式,这里是推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//选择上拉
GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO
GPIO_ResetBits(GPIOA,GPIO_Pin_6| GPIO_Pin_7);//设置初始状态,这里是setbits,设置低电平,即灯亮。
}
KEY部分:
key.hコアコード:
#define key0 PEin(4) //定义IO口
#define key1 PEin(3)
void key_init(void); //初始化按键
void KEY_Scan(void); //初始化按键扫描函数
初始化按键IO 口的固定模式。
oid key_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4| GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//注意按键是输入模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOE, &GPIO_InitStructure);
非常にシンプルなワンボタンスキャン機能、STM32のキーは、2つのモード、ダブルクリックのサポートを提供し、サポートしていない私が知って取得していない選択したモードをダブルクリックします。
void KEY_Scan(void)
{
if(key0 == 0)
{
delay_ms(5);//消抖
if(key0==0)
{
LED0 =~LED0;
LED1 =~LED1;
}
}
}
主な機能部品:
int main(void)
{
delay_init(168);
LED_Init();
key_init();
while(1)
{
KEY_Scan();
}
省略この記事では、読者がそれ自身のを追加し、いくつかのヘッダファイルを宣言します!