查看: 899|回复: 0

Atmel SAM4L单片机之旅--1、利用循环延时来闪烁LED小灯

[复制链接]
  • TA的每日心情

    2023-7-25 22:49
  • 签到天数: 385 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2015-1-12 10:21:31 | 显示全部楼层 |阅读模式
    分享到:
    拿到这个开发板有一段时间了,一直没有时间来做详细的测评,期间小菜也催问了几次,真是不好意思。终于有了时间来做这件事,于是打算写几篇,当然从最简单的开始,一步一步的深入,最后把整个开发板的所有模块都能一一做个尝试,分享给大家。
    目前这块板子和芯片所能参考的只有英文手册,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 <sam4l.h>
    #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,并把文件添加到项目中。编译并下载至开发板,小灯已经开始闪烁了。
    下节:利用定时器来闪烁LED小灯
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-3-29 15:00 , Processed in 0.116465 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.