Atmel SAM4L单片机之旅(Keil 版) 1、利用循环延时来闪烁LED小灯
[复制链接]
本帖最后由 ketose 于 2015-1-13 11:14 编辑
拿到这个开发板有一段时间了,一直没有时间来做详细的测评,期间小菜也催问了几次,真是不好意思。终于有了时间来做这件事,于是打算写几篇,当然从最简单的开始,一步一步的深入,最后把整个开发板的所有模块都能一一做个尝试,分享给大家。 目前这块板子和芯片所能参考的只有英文手册,IDE可以使用Atmel Studio、IAR、Keil。网上有的教程主要以Atmel Studio、IAR为主,我们今天选择大家用的比较多的Keil + 寄存器,一来是因为Keil是ARM推的开发工具,二来是也尝试了用IAR,发现IAR的下载仿真速度慢的让人难以想像。至于Atmel Studio本人机器上没有,也懒得去再装一个再去了,还要去熟悉Atmel Software Framework,搞起来让人头大,还是寄存器更直接,更能了解MCU的设计思想和运做机制。
废话不多说,来看今天的例子。
1、电路图
2、实现思路
PIO的引脚是复用的,但在这里我们直接使用PIO控制器控制引脚的电平就可以了。可以通过向PIO_ODERS、PIO_ODRC写入特定的值来直接控制引脚的电平。然后,通过让程序执行一个次数较长的空循环就可以实现延时功能。
3、Keil里创建项目
先择SAM4LC4C芯片
项目配置
4、新建文件输入下面的代码:
#include
#define PIOC GPIO->GPIO_PORT[2]
//延时函数
void delay(int num)
{
volatile int i = 0;
for(i=0;i<1024*num;i++);
}
int main()
{
/* 使能PA07引脚 */
PIOC.GPIO_GPERS = GPIO_PC07;
/* PA07输出驱动使能 */
PIOC.GPIO_ODERS = GPIO_PC07;
/* PA07上拉使能 */
PIOC.GPIO_PUERS = GPIO_PC07;
while(1)
{
/*PC07清0,输出低电平*/
PIOC.GPIO_OVRC = GPIO_PC07;
/* 延迟 */
delay(4);
/*PC07置1,输出高电平*/
PIOC.GPIO_OVRS = GPIO_PC07;
/* 延迟 */
delay(4);
}
return 0;
}
保存上面的代码为main.c,并把文件添加到项目中。编译并下载至开发板,小灯已经开始闪烁了。
实验视频:
下节:2、利用定时器来闪烁LED小灯
|