在不使用RTC计时器的情况下,使用函数库所提供的ms级延时函数可以自行完成一个电子时钟的制作。 为了配合后续串口屏的使用,这里的时间值的输出被设计成串口屏所接收的指令格式,见下图所示。 其中t9.txt是用于显示时间值的变量属性,由于这里的时间值无需进行计时处理,故被设置为字符型。 串口屏指令格式 此外,由于串口屏的常规波特率为9600bps,故需对其加以调整,经验证要产生9600bps的波特率,应做如下定义:
#defineSERCOM2_USART_INT_BAUD_VALUE (65367U)
实现电子时钟功能的主程序为: int main ( void )
{
float u;
uint8_t
uint8_t b[20]={0x74,0x39,0x2E,0x74,0x78,0x74,0x3D,0x22,0x30,0x38,0x3a,0x31,0x32,0x3a,0x30,0x30,0x22,0xff,0xff,0xff};
// t9.txt="08:12:00"
uint8_t i,j,m,h;
SYS_Initialize ( NULL );
SYSTICK_TimerStart();
SERCOM2_USART_Initialize();
i=0;
j=0;
m=12;
h=8;
for(i=0;i<22;i++)
{
SERCOM2_USART_WriteByte(a[i]);
SYSTICK_DelayMs(10);
}
while(1)
{
for(i=0;i<20;i++)
{
SERCOM2_USART_WriteByte(b[i]);
SYSTICK_DelayMs(10);
}
SYSTICK_DelayMs(800);
j=j+1;
if(j==60)
{
j=0;
m=m+1;
}
b[14]=(j/10)+'0';
b[15]=(j%10)+'0';
if(m==60)
{
m=0;
h=(h+1)%24;
}
b[11]=(m/10)+'0';
b[12]=(m%10)+'0';
b[8]=(h/10)+'0';
b[9]=(h%10)+'0';
}
}
稍感不足的是,开发板上供调试用的串口2被专用化占有了,并没有像各厂商所采用的也能由用户使用的方式,应该增加2个焊盘将这2个引脚引出。
|