YYYtech
STM32 第一个例子
建立文件夹:GPIO_TEST 存放整个工程项目
在该项目文件夹下建立子文件夹存放不同类别的文件:
Obj:存放工程文件
Out:存放编译输出文件
Sorce:存放源代码文件
打开 KEIL3:
这个时候显示的应该是上次使用过的工程。
新建工程:
把该工程存放在刚刚建立的 Obj 子文件夹下:
1
YYYtech
点击保存后弹出选择器件窗口,选择 STM32F103RB 器件(选择使用器件型号)
点击确定后弹出:
2
YYYtech
这个时候选择“是”,工程建立成功:
工程管理:(这个对于项目的运行没有必要性,只是为了方便项目的管理)
在工程上右键,选择
3
YYYtech
弹出如下工程文件管理窗口:
经过操作,建立如下文件夹有备使用,这个可以根据个人编程习惯处理。
4
YYYtech
新建源文件:
保存:
保存在 Sorce 子文件夹下,注意文件名为 gpio_test.c,一定要有 C 后缀。
把该文件添加到工程:
5
YYYtech
编写代码:
//**********************************************************************
// 作者:JingYong
// 时间:2007/12/14
//***********************************************************************
/***********************************************************************
main 文件,GPIO 操作,完成最简单的 IO 操作实验,就是控制 LED 灯
4 个 LED 分别对应 PC 的 6、7、8、9 引脚。4 个 LED 流水显示
**************************************************************************/
#include "stm32f10x_lib.h"
GPIO_InitTypeDef GPIO_InitStructure;
void LED_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9
| GPIO_Pin_10
| GPIO_Pin_11
|
GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
6
YYYtech
}
void LED_TurnOn(u8 led)
{
}
void Delay(vu32 nCount)
{
for(; nCount != 0; nCount--);
}
main()
{
//RCC_Configuration();
LED_Init();
while(1)
{
GPIO_SetBits(GPIOC, GPIO_Pin_9);
Delay(0x8ffff);
GPIO_ResetBits(GPIOC, GPIO_Pin_9);
Delay(0x8ffff);
GPIO_SetBits(GPIOC, GPIO_Pin_10);
Delay(0x8ffff);
GPIO_ResetBits(GPIOC, GPIO_Pin_10);
Delay(0x8ffff);
GPIO_SetBits(GPIOC, GPIO_Pin_11);
Delay(0x8ffff);
GPIO_ResetBits(GPIOC, GPIO_Pin_11);
Delay(0x8ffff);
GPIO_SetBits(GPIOC, GPIO_Pin_12);
Delay(0x8ffff);
GPIO_ResetBits(GPIOC, GPIO_Pin_12);
Delay(0x8ffff);
}
}
注意:在这里用到了 RCC 和 GPIO 的库函数,所以必须把这两个函数加入工程。
7
YYYtech
8