1.硬件设计
本次用到的硬件只有 LED(DS0 和 DS1)。其电路在 ALIENTEK 探索者 STM32F4 开发板 上默认是已经连接好了的。DS0 接 PF9,DS1 接 PF10。所以在硬件上不需要动任何东西。其连 接原理图如图
2.软件设计
1.
首先,找到TEST 工程(在光盘:4,程序源码\1,标准例程-寄存器版本 \实验 0 新建工程实验) ,在该工程文件夹下面新建一个 HARDWARE 的文件夹,用来存储以后 与硬件相关的代码。然后在 HARDWARE 文件夹下新建一个 LED 文件夹,用来存放与 LED 相 关的代码。
2.
然后我们打开 USER 文件夹下的 test.uvproj 工程,新建一个C文件,然后保存在
HARDWARE→LED 文件夹下面,保存为 led.c。在该文件中输入如下代码:
#include "led.h"
//初始化 PF9 和 PF10 为输出口.并使能这两个口的时钟
//LED IO 初始化
void LED_Init(void)
{
RCC->AHB1ENR|=1<<5;//使能 PORTF 时钟
GPIO_Set(GPIOF,PIN9|PIN10,GPIO_MODE_OUT,GPIO_OTYPE_PP,
GPIO_SPEED_100M,GPIO_PUPD_PU); //PF9,PF10 设置
LED0=1;//LED0 关闭 LED1=1;//LED1 关闭
}
然后再在LED文件夹中加一个led.h(这是规范,规矩就是规矩,自定义文件中.c与.h并存)
接着把.c文件和.h文件加入工程中
3.
时钟使能:
(在rcc文件中此处有5个使能函数,我们选第一个AHB1)
选AHB1中的参数时定位到AHB1函数中去,然后在函数中发现assert_param函数直呼内涵,因为我们可以在此函数中发现参数的具体位置,如下图所示:
它的有效值一般在上面的宏定义中,我们初始化的IO是F,故第一个参数的值为RCC_AHB1Periph_GPIOF(因为我们PF9,PF10对应的是F的IO口),如下图所示:
同理,第二个参数:
所以,我们的我们使能部分函数为:
IO口的初始化函数:
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
很明显,第一个参数为哪个IO口,我们填GPIOF,第二个参数为一个结构体变量,我们先定义一个结构体,然后依次配结构体内部各个参数,最后在GPIO_Init函数中取此结构体的地址。(详细步骤不说,上面已经稍作演示)