1 实验一:一个灯的闪烁 一、实验要求 1. 熟悉使用STM32F103ZET6 开发板 2. 利用C 语言程序实现一个灯闪烁 二、电路原理图 图1-1 LED 灯硬件连接图 三、软件分析 1.本实验用到以下3 个库函数( 省略了参数) :RCC_DeInit() ;RCC_APB2PeriphClockCmd();GPIO_Init(); 2.配置输入的时钟:SystemInit()主要对RCC 寄存器进行配置,GPIOA 连接在APB2 上,因此RCC_APB2PeriphClockCmd()函数需要使能APB2Periph_GPIOA 3.声明GPIO 结构: PF6~PF10 口配置为输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10; 4.应用GPIO 口:点亮LED1 有五种方法 ①ODR 寄存器法:GPIOA->ODR=0xffbf; ②位设置/清除寄存器法:GPIOA->BRR|=0X001; ③方法③只适用于 GPIOx_BSRR 寄存器 ④GPIO_WriteBit()函数法: GPIO_Write(0xffbf); ⑤置位复位库函数法:GPIO_ResetBits(GPIOF,GPIO_Pin_8); 5.主函数程序: int main(void) { RCC_Configuration(); /* 配置系统时钟 */ GPIO_Configuration(); /* 配置GPIO IO 口初始化 */ for(;;) { GPIOF->ODR = 0xfeff; /* PF8=0 --> 点亮D3 */ Delay(600000); GPIOF->ODR = 0xffff; /* PF8=1 --> 熄灭 D3 */ Delay(600000); } } 四、实验现象 下载程序后开发板上的LED1 灯闪烁 2 五 、 总 结 通 过 对 本 实 验 可 以 发 现 , 和 51 等 8 位 单 片 机 相 比 , STM32 对 I/O 端 口 的 操作 变 得 复 杂 了 许 多 。 51 单 片 机 点 灯 的 程 序 最 简 单 , 直 接 在 main()中 写 一 个 while(1), 里 面 写 4行 代 码 就 可 以 了 。 STM32 进 入while(1)之 前 必 须 先 配 置I/O 的 方 向 , 必 须 使 能外 设 的 时 钟 。 对STM32 来 说 , 除 了CM3 内 核 都 算 外 设 , 包 括GPIO。 STM32 可 以关 闭 任 何 外 设 的 时 钟 以 禁 止 该 外 设 , 这 样 设 计 是 出 于 减 少 功 耗 的 考 虑 。 实 验 二 : 流 水 灯 的 闪 烁 一 、 实 验 要 求 1、 熟 悉 使 用 STM32F103ZET6 开 发 板 2、 利 用 C 语 言 程 序 实 现 流 水 灯 的 闪 烁 实 验 二 、 电 路 原 理 图 图 1-2 流 ...