第三章 点亮我的LED
――I/O输出实验
一.背景
当完成上述实验后,我就可以像使用51单片机那样,在C文件的main()函数中通过设置相应的寄存器来达到对相应外设(如I/O的输入、输出等)的控制目的。
二.实验目的
通过控制PIO的相关寄存器,使特定的I/O口输出高电平和低电平,来点亮LED。
三.实验程序和参数设置
1> 连接器选项设置
RO Base = 0x00200000;
RW Base = 0x00202000;
Image entry point=0x00200000;
2> 启动代码
启动代码与第一个实验中修改后的相同,即将“__main()”改成main()。
3> C语言的代码
#i nclude "AT91SAM7S64.h" //特殊功能寄存器头文件。类似与51单片机中reg51.h
#i nclude "Board.h" //定义目标板的头文件
int main(void)
{ *AT91C_PIOA_PER = LED_MASK;//使能4个LED对应管脚的I/O口功能
*AT91C_PIOA_OER = LED_MASK;//使能4个LED管脚的输出功能
while (1)
{ //可用单步运行来查看输出结果
*AT91C_PIOA_SODR = LED1;//将LED1对应的管脚输出高电平
*AT91C_PIOA_CODR = LED1;//将LED1对应的管脚输出低电平
}
}
四.总结
本实验非常的顺利,没有出现问题。证明ARM芯片的内部外围与8位单片机内部外围的控制或使用方法在原理上基本是相同的,都是通过设置相关的特殊功能寄存器来实现控制。也就是说只要会单片机也就会ARM!
――I/O输出实验
一.背景
当完成上述实验后,我就可以像使用51单片机那样,在C文件的main()函数中通过设置相应的寄存器来达到对相应外设(如I/O的输入、输出等)的控制目的。
二.实验目的
通过控制PIO的相关寄存器,使特定的I/O口输出高电平和低电平,来点亮LED。
三.实验程序和参数设置
1> 连接器选项设置
RO Base = 0x00200000;
RW Base = 0x00202000;
Image entry point=0x00200000;
2> 启动代码
启动代码与第一个实验中修改后的相同,即将“__main()”改成main()。
3> C语言的代码
#i nclude "AT91SAM7S64.h" //特殊功能寄存器头文件。类似与51单片机中reg51.h
#i nclude "Board.h" //定义目标板的头文件
int main(void)
{ *AT91C_PIOA_PER = LED_MASK;//使能4个LED对应管脚的I/O口功能
*AT91C_PIOA_OER = LED_MASK;//使能4个LED管脚的输出功能
while (1)
{ //可用单步运行来查看输出结果
*AT91C_PIOA_SODR = LED1;//将LED1对应的管脚输出高电平
*AT91C_PIOA_CODR = LED1;//将LED1对应的管脚输出低电平
}
}
四.总结
本实验非常的顺利,没有出现问题。证明ARM芯片的内部外围与8位单片机内部外围的控制或使用方法在原理上基本是相同的,都是通过设置相关的特殊功能寄存器来实现控制。也就是说只要会单片机也就会ARM!