打印
[其他产品]

"SAM D21 开发板试用心得"+MDK开发初识

[复制链接]
845|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
初识SAMD21Blinky
拿到板子的第一个感觉就是做工相当不错,马上上网下载相关文档,数据手册那是必不可少了。
上图板子靓照。
1
2
由于一直使用MDK,所以这个也不例外,不过看了一下MDK4.73居然不知道SAMD21的主控,没办法了,只好上MDK5了。安装MDK5后,还要使用package installer工具安装Keil::SAMD21_DFP,来支持我们的SAMD21的开发。
安装完成后,我就可以开始我们的第一个例子程序了,著名的LED闪灯程序Blinky
第一步,创建MDK工程,器件选择
这个和MDK4.73确实不一样了,看看多了一个keil.samd21_dfp.1.0.0的设备包,我们打开SAMD21 Series中的ATSAMD21J,并且选中下面的ATSAMD21J18A,这个是我们这块开发板的主控芯片。
第二步,工程模块支持
这里面是MDK5的新内容了,MDK4可没有这些东西。根据自己需要往工程中加吧,我这里面只选了途中这几项,其实只选Startup好像就可以了。
第三步,添加代码
工程建立好,添加main.c文件,如图所示
打开main.c,添加我们自己的代码。此处值得一提的是,根据手册描述,SAMD21上电复位后,时钟自动初始化为内部8MHz时钟,并通过GCLK提供给CPU和总线使用,PM已经使能PORT的时钟驱动,所以对于我们来说就需要设置LED的相关驱动引脚就可以了。
贴上代码,提一下,LED使用的是PB30.
void LED_Init(void)
{
        PORT->Group[1].DIRSET.reg = PORT_PB30;
        PORT->Group[1].OUTSET.reg = PORT_PB30;
}
void LED_ON(void)
{
        PORT->Group[1].OUTCLR.reg = PORT_PB30;
}
void LED_OFF(void)
{
        PORT->Group[1].OUTSET.reg = PORT_PB30;
}
SAMD21一共有三个口ABC,其中PORT->Group[1]就代表B口,所以我们的所有操作都是针对Group[1]来的。
初始化中,要设置PB30为输出
        PORT->Group[1].DIRSET.reg = PORT_PB30;
LED灯为低电平有效,所以点亮LED,应该将PB30置低。
        PORT->Group[1].OUTCLR.reg = PORT_PB30;
熄灭LED灯,要将PB30置高。
        PORT->Group[1].OUTSET.reg = PORT_PB30;

添加main主函数。
int main(void)
{
        LED_Init();
        while(1)
        {
                LED_ON();
                delay(10000);
                LED_OFF();
                delay(100000);
        }
}
第四步,编译链接,下载运行
看看运行效果吧,小灯是不是欢快再闪啊。

使用特权

评论回复
沙发
classroom| | 2021-5-7 10:58 | 只看该作者
楼主速度真快,写的不错,赞一个!

使用特权

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

本版积分规则

508

主题

1941

帖子

5

粉丝