(2)编写文件代码
点击“File | new…”,生成一个空白文件,选择“File | save”保存为 d:\xxx\led\led.c。后面所有的.c
文件都如此操作。这是一个存储与硬件相关函数的文件,其中包含了二极管与数码管的初始化
和实现;再用同样方法建立与 led.c 相关的 led.h、delay.c、led.c、sys.c 以及相应的.h 文件;最
后建立 main.c 并保存。
(3)将文件载入工程
按“+”展开 project 窗口中的 Target,出现 Source Group,在右键弹出的菜单中选择“Add Files to
Group ‘Source Group’”,控制文件对话框进入 d:\xxx\led,选择 stm32f10x.s,将 stm32f10x.s 这个
启动文件以及 led.c、delay.c、sys.c、usart.c、main.c 依次加入到项目中去。
(4)编译调试
单击按钮栏“Build”或“Rebuild”,对整个工程进行编译连接,观察文件夹下增加了哪些文件;
如果出现了错误,则在下方的 Command 窗口中按照错误信息进行分析;之后可在按钮栏
“Start/Stop debug session”进行调试。
(5)烧录运行
启动 MCUISP 并连接 STM32 单片机,数据线分别连接 STM32 单片机上的 COM 口和计算机
上的 USB 口,先搜索串口并选择对应的 COM 口,再选择“联机下载时的程序文件”为对应项目
生成的.hex 文件,最后点击“开始编程”,并先后快速且连续地按下“RESET”按键和“ISP”按键。
(6)记录实验结果并分析
观察烧录启动后实验板上的现象并记录。
实验结果与分析
1、实验结果
观察到实验板上 L0、L1、L2、L3、L4、L5、L6、L7 发光二极管从右至左依次点亮,间隔
300ms。当 L0、L1、L2、L3、L4、L5、L6、L7 发光二极管全部点亮后,L0、L1、L2、L3、L4、
L5、L6、L7 发光二极管同时熄灭,间隔 300ms 后,L0、L1、L2、L3、L4、L5、L6、L7 发光二
极管再次从右至左依次点亮。如此反复循环。
2、实验分析
(1)引入头文件
#include "sys.h"
#include "delay.h"
#include "led.h"
这里引入了三个头文件:
① sys.h 头文件包含了 STM32 单片机的一些基本宏定义;
② delay.h 头文件包含了延时函数的定义;
③ led.h 头文件包含了 LED 灯控制的函数定义。
(2)系统初始化
Stm32_Clock_Init( 6 );
delay_init( 72 );
LED_Init();
这里进行了系统初始化,包括时钟初始化、延时函数初始化和 LED 灯初始化。
(3)GPIO 初始化
GPIOE->ODR &= ~(0xff<<8);
LED_SEL = 1;
这里使用了 STM32 单片机中的 GPIOE 引脚来控制 LED 灯的亮灭,通过设置 ODR 寄存器的
值来实现。LED_SEL 是一个宏定义,用于选择需要控制的 LED 灯。