查看: 4315|回复: 1

第一个程序之LED点灯

[复制链接]
  • TA的每日心情
    奋斗
    2015-1-22 18:04
  • 签到天数: 189 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2013-10-27 18:35:29 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 nongxiaoming 于 2013-10-27 18:37 编辑

    一、准备工作:
         将上一节搭建的工程模板复制一份,命名为“1.blink”,这作为我们开发的第一个程序。
    二、程序编写:
    板子上只有一个可控制的LED,就是LED0,在按键的旁边。打开原理图,可以看到LED的电路如下图:
    file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps_clip_image-15414.png 图片12.png
    通过原理图可以看出,LEDMCUPB14相连接,当PB14输出低电平的时候,LED就会被点亮,为高电平的时候被熄灭。
    下面开始编写LED驱动程序,首先在“Drivers”文件夹创建一个“drv_led.c”和“drv_led.h”文件,并加入到工程的“Drivers”分组下,在drv_led.c中编写led驱动程序,如下:
    #include "drv_led.h"

    void led_hw_init(void)
    {
    /*禁止外设管理控制寄存器(PMC)写保护*/
      PMC->PMC_WPMR = 0x504D4300;
      /*使能PIOB时钟*/        
      PMC->PMC_PCER0 = (1UL << ID_PIOB );  
            /*使能外设管理控制寄存器(PMC)写保护*/
      PMC->PMC_WPMR = 0x504D4301;  
    /*使能LED管脚*/
    PIOB->PIO_PER|=(0x01<<LED0_PIN);
            /*使能LED管脚输出*/
    PIOB->PIO_OER|=(0x01<<LED0_PIN);
            /*设置LED输出,即LED管脚为高电平*/
    PIOB->PIO_SODR|=(0x01<<LED0_PIN);
    }
        这里就写一个函数体,里面放置led的初始化代码,首先是要去开启PIOB的时钟,PMC中的PMC_PCER0是控制各种外设时钟的,而且这个寄存器是被写保护的,在写之前,需要禁止写保护,这样写入数据才有效,给对应PIOBID位置1就算是开启了PIOB的时钟。讲到这里,也许有人注意到上一节搭建工程模板的时候这个没开启怎么就能成功点亮LED呢?是的,上次纯属侥幸。应该是芯片默认是开启这个PIOB时钟的,但对于我们编写驱动来说,这个步骤还是不要少的好,因为有可能再次之前这个别其他程序关掉了。
    接下来是使能PIOB14管脚的GPIO功能,通过PIOBPIO_PER寄存器去使能,对应的还有PIO_PDR是失能GPIO功能。使能了PIOB14GPIO功能后,还要使能它的输出功能,接着就可以用过PIO_SODRPIO_CODR去控制输出低电平还是高电平了。
    drv_led.h中主要是初始化函数的声明好LED控制相关的宏,如下:
    #ifndef __DRV_LED_H
    #define __DRV_LED_H
    #include "sam4n.h"

    #define LED0_PIN   14
    #define led_hw_on() PIOB->PIO_CODR=(0x01UL<<LED0_PIN)
    #define led_hw_off() PIOB->PIO_SODR=(0x01UL<<LED0_PIN)

    void led_hw_init(void);

    #endif
    主要是防重复包含和LED控制的两个宏定义,接下来在main.c中程序如下:
    int main(void)
    {
    led_hw_init();
    while(1){
    led_hw_on();
    delay(300);
    led_hw_off();
    delay(300);
    }

    }
    主要是先初始化led,然后就可以控制led的亮和灭了。效果我就不说了,就是简单的一亮一灭功能。主要是先熟悉一下SAM4NGPIO是怎么驱动
    1.点亮LED.pdf (107.82 KB, 下载次数: 20)
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2013-11-19 11:43
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2013-11-18 19:59:02 | 显示全部楼层
    你有板子的完整原理图吗?发给我一下
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-11-20 01:32 , Processed in 0.119130 second(s), 18 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.