1. まず、プロジェクト ディレクトリに PROGREAM (好みに応じて名前を付けます) フォルダーを追加し、このフォルダーの下にサブフォルダー 1_LED を作成し、次に 1_LED の下に led.c および led.h ファイルを作成して、led を変換する必要があります。 c と led.h がプロジェクトに追加されます。ヘッダー ファイルのパスに 1_LED を忘れずに追加してください。詳細は前のメモに記載されています。忘れた場合は、戻って確認できます。
2、led.c ファイルと led.h ファイルを作成します。
1、led.h:
#ifndef __LED_H
#define __LED_H
void LED_Init(void);//函数声明
#endif
2、led.c:
IO ポートを操作する手順は次のとおりです。
(1) IO ポートクロックを有効にし、関数 RCC_APB2PeriphColckCmd() を呼び出します。
(2) IO ポート モードを初期化し、関数 GPIO_Iint() を呼び出します。
(3) IO ポートを操作してハイレベルとローレベルを出力します。
具体操作:
1) 開発ボードの回路図によると、LED0 と LED1 はそれぞれ開発ボードの PB5 と PE5 に接続されているため、最初に PB5 と PE5 のクロックを有効にする必要があります。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//GPIOB
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//GPIOE
2) IO グループを有効にした後、最初に対応する構造を定義し、次に対応するピン番号、モード、速度を設定し、最後に IO ポートの出力レベルを設定する必要があります。
GPIO_InitTypeDef GPIO_InitStr;//定义GPIO_Init结构体
GPIO_InitStr.GPIO_Mode=GPIO_Mode_Out_PP;//设置为推挽输出
GPIO_InitStr.GPIO_Pin=GPIO_Pin_5;//设置PB5
GPIO_InitStr.GPIO_Speed=GPIO_Speed_50MHz;//设置速度为50Mhz
GPIO_Init(GPIOB,&GPIO_InitStr);//初始化PB
GPIO_SetBits(GPIOB,GPIO_Pin_5);//PB5输出高电平
//同PB5
GPIO_InitStr.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStr.GPIO_Pin=GPIO_Pin_5;
GPIO_InitStr.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOE,&GPIO_InitStr);
GPIO_SetBits(GPIOE,GPIO_Pin_5);
3) led.c のコード全体:
#include"led.h"
#include"stm32f10x.h"
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStr;//定义GPIO_Init结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//GPIOB
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//GPIOE
GPIO_InitStr.GPIO_Mode=GPIO_Mode_Out_PP;//设置为推挽输出
GPIO_InitStr.GPIO_Pin=GPIO_Pin_5;//设置PB5
GPIO_InitStr.GPIO_Speed=GPIO_Speed_50MHz;//设置速度为50Mhz
GPIO_Init(GPIOB,&GPIO_InitStr);//初始化PB
GPIO_SetBits(GPIOB,GPIO_Pin_5);//PB5输出高电平
//同PB5
GPIO_InitStr.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStr.GPIO_Pin=GPIO_Pin_5;
GPIO_InitStr.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOE,&GPIO_InitStr);
GPIO_SetBits(GPIOE,GPIO_Pin_5);
}
3、主な機能:
#include"stm32f10x.h"
#include"led.h"
#include"delay.h"
int main(void)
{
delay_init();
LED_Init();
while(1)
{
GPIO_SetBits(GPIOB,GPIO_Pin_5);
GPIO_SetBits(GPIOE,GPIO_Pin_5);
delay_ms(500);
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
delay_ms(500);
GPIO_ResetBits(GPIOE,GPIO_Pin_5);
delay_ms(500);
}
}