初识SAMD21之Blinky 拿到板子的第一个感觉就是做工相当不错,马上上网下载相关文档,数据手册那是必不可少了。 上图板子靓照。 图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一共有三个口A、B、C,其中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); } } 第四步,编译链接,下载运行 看看运行效果吧,小灯是不是欢快再闪啊。
|