打印
[Atmel]

用SAM-BA或JLINK跑ATSAM4E16的程序(2)流水灯

[复制链接]
684|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ddllxxrr|  楼主 | 2015-10-27 19:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ddllxxrr 于 2015-10-31 22:03 编辑

由于我的开发板有四个LED,所以在昨天的基础上我想跑一下流水灯,思路不难,只要点亮就行了。高电平是灭,低电平是亮。

除了昨天的PA0 还有PC20,PC22,PC23,我刚开始忘记了管脚从零开始跑了几圈也没有成功。

后来改过成功了。从这个程序,我搞懂了,只要使能端口就是给这个管脚时钟了,而不用象某种单片机必须得使能时钟哈。

编译通过了,下载时注意,当调入BIN文件后,点发送



出现如下界面:点否。然后点执行


下载后,LED灯象流水一样一个接一个的亮灭了。

程序如下:


#include "sam.h"

/*[延时子函数声明]*/
void Delay(int num)
{        for (volatile int i = 0; i < 1000 * 1024 * num; ++i );
}
/*[主程序]*/
int main(void)
{   SystemInit();                    /*初始化*/
        PIOA->PIO_PER = (uint32_t)0x01;  /* 让PIO控制器直接控制PA0引脚 PIO 使能 */
        PIOA->PIO_OER = (uint32_t)0x01;  /* PIO 输出使能 */
        PIOA->PIO_OWER = (uint32_t)0x01; /* PIO 输出写使能 */
        
        PIOC->PIO_PER = (uint32_t)0x00d00000;  /* 让PIO控制器直接控制PC20,PC22,PC23引脚 PIO 使能 */
        PIOC->PIO_OER = (uint32_t)0x00d00000;  /* PIO 输出使能 */
        PIOC->PIO_OWER = (uint32_t)0x00d00000; /* PIO 输出写使能 */
        PIOA->PIO_SODR = (uint32_t)0x01; /* 设置PA0引脚为高电平,灯灭 */
        PIOC->PIO_SODR = (uint32_t)0x00100000; /* 设置PC20引脚为高电平,灯灭 */
        PIOC->PIO_SODR = (uint32_t)0x00400000; /* 设置PC22引脚为高电平,灯灭 */
        PIOC->PIO_SODR = (uint32_t)0x00800000; /* 设置PC23引脚为高电平,灯灭 */
        
        
        
        while (1)
        {   
                Delay(2);                        /*延迟*/
                PIOA->PIO_SODR = (uint32_t)0x01; /* 设置PA0引脚为高电平,灯灭 */
                Delay(2);                        /*延迟*/
                PIOA->PIO_CODR = (uint32_t)0x01; /* 设置PA0引脚为低电平,灯亮 */
                Delay(2);                        /*延迟*/
                PIOA->PIO_SODR = (uint32_t)0x01; /* 设置PA0引脚为高电平,灯灭 */
               
                Delay(2);                        /*延迟*/
                PIOC->PIO_SODR = (uint32_t)0x00100000; /* 设置PC20引脚为高电平,灯灭 */
                Delay(2);                        /*延迟*/
                PIOC->PIO_CODR = (uint32_t)0x00100000; /* 设置PC20引脚为低电平,灯亮 */
                Delay(2);                        /*延迟*/
                PIOC->PIO_SODR = (uint32_t)0x00100000; /* 设置PC20引脚为高电平,灯灭 */
               
                Delay(2);                        /*延迟*/
                PIOC->PIO_SODR = (uint32_t)0x00400000; /* 设置PC22引脚为高电平,灯灭 */
                Delay(2);                        /*延迟*/
                PIOC->PIO_CODR = (uint32_t)0x00400000; /* 设置PC22引脚为低电平,灯亮 */
                Delay(2);                        /*延迟*/
                PIOC->PIO_SODR = (uint32_t)0x00400000; /* 设置PC22引脚为高电平,灯灭 */
               
                Delay(2);                        /*延迟*/
                PIOC->PIO_SODR = (uint32_t)0x00800000; /* 设置PC23引脚为高电平,灯灭 */
                Delay(2);                        /*延迟*/
                PIOC->PIO_CODR = (uint32_t)0x00800000; /* 设置PC23引脚为低电平,灯亮 */
                Delay(2);                        /*延迟*/
                PIOC->PIO_SODR = (uint32_t)0x00800000; /* 设置PC23引脚为高电平,灯灭 */
               
               
        }
}





相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2399

主题

6963

帖子

68

粉丝