基础实验一GPIO(流水灯)
硬件连接比较简单,只需将Nu-Link和M0转换板对应接口(VCC DAT CLK RST GND)用杜邦线连接,再连接PC-USB端口即可。平台搭建也跳过,直接上图;
just code it :
/* ------------------------ *作 者:小AX *官 网:www.smartmcu.com *淘 宝:http://smartmcu.taobao.com/ * Q Q :1771744839 *功 能 描 述:通过软件延时函数实现LED灯实现顺流逆流等变化效果. ------------------------ */#include "SmartM_M0.h"/*****************************************函数名称:main*输 入:无*输 出:无*功 能:函数主体******************************************/INT32 main(VOID){ UINT32 i; UINT32 rand(); PROTECT_REG ( PWRCON |= XTL12M_EN; //默认时钟源为外部晶振,PWRCON为系统掉电控制寄存器 while((CLKSTATUS & XTL12M_STB) == 0); //等待12MHz时钟稳定(CLKSTATUS时钟状态监控寄存器) CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M; //设置外部晶振为系统时钟(CLKSEL0 时钟源选择控制寄存器0) P2_PMD=0x5555; //GPIO设置为输出模式 ) while(1) { for(i=0; i<8; i++) { P2_DOUT = ~(1UL<<i); //移位操作,顺流 Delayms(100); //延时100ms } for(i=1; i<8; i++) { P2_DOUT = ~(128UL>>i); //移位操作,逆流 Delayms(100); //延时100ms } for(i=0;i<4;i++) { P2_DOUT = ~((8UL>>i)|(16UL<<i)); //移位操作,中间望向两端跑 Delayms(100); //延时100ms } for(i=0;i<4;i++) { P2_DOUT = ~((64UL>>i)|(2UL<<i)); //移位操作,两端向中间跑 Delayms(100); //延时100ms } P2_DOUT=0xff; Delayms(1000); //全体灭灯 //延时1000ms for(i=0; i<24; i++) { P2_DOUT = rand(); //移位操作,随机闪烁 Delayms(100); } //延时100ms }}