第一部分指导手册实验分析
1 LED 流水灯
这是我们学习C 语言实验的第一个示例,项目的烧录、执行与汇编相同,这里我们简要分析一下我们的项目。
首先我们从main 函数开始,它有两个函数,do_system_initial 和led_initial。do_system_initial 函数首先会调用led_initial 函数初始化led,再通过tester_led 函数控制相应LED 的亮与灭。
1.1 do_system_initial
查阅手册可知,6818 芯片共有160 个GPIO 接口,分为5 组。我们只需通过修改对应寄存器的值,就能完成对他们的初始化。在之前汇编语言编程中,我们就修改了它的复用功能选择寄存器、输出使能寄存器、输出寄存器等。
我们先简要介绍一下LED 灯的初始化。
对LED 灯的初始化方法如下:
在这里,16 端口代表LED1 灯。具体如下:
(1)gpio_set_cfg 函数用于将GPIO_A16 设置为GPIO 功能, 如要作为输出使用,需要将复用功能寄存器设为00, 即第二个参数为0。
(2)gpio_set_pull 函数用于将GPIO_A16 设置为上拉或者下拉。这涉及到CMOS 制作工艺的问题,在此不再详细讨论,只需知道,低电平有效设为下拉,高电平有效设为上拉。
(3)gpio_direction_output 函数通过修改GPIO_OUTENB 和GPIO_OUT寄存器将GPIO_A16 设置为输出,
(4)gpio_set_value 函数用于GPIO_A16 设置为低电平。对其它的LED 灯执行同样的操作,我们便完成了LED 灯的初始化。
1.2 tester_led
函数如下:
通过全局变量index