打印
[PIC®/AVR®/dsPIC®产品]

【ATSAMD51EVK测评报告】+利用ms级延时实现电子时钟功能

[复制链接]
882|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在不使用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个引脚引出。

使用特权

评论回复
沙发
gygp| | 2022-12-22 19:29 | 只看该作者
为什么不使用定时器呢?              

使用特权

评论回复
板凳
mollylawrence| | 2022-12-22 19:38 | 只看该作者
可以使用定时器实现精准延时。              

使用特权

评论回复
地板
jinglixixi|  楼主 | 2022-12-23 00:11 | 只看该作者
gygp 发表于 2022-12-22 19:29
为什么不使用定时器呢?

当时没用到,因为MCC无法使用也就无法配置计时器了,其实延时函数用的也是计时器。

使用特权

评论回复
5
macpherson| | 2022-12-24 21:29 | 只看该作者
这个电子时钟还有精度要求吗?              

使用特权

评论回复
6
jinglixixi|  楼主 | 2022-12-25 10:24 | 只看该作者
macpherson 发表于 2022-12-24 21:29
这个电子时钟还有精度要求吗?

短时间内没问题

使用特权

评论回复
7
maqianqu| | 2023-1-6 17:51 | 只看该作者
如果使用指令,怎么实现1ms级别的延时?

使用特权

评论回复
8
jinglixixi|  楼主 | 2023-1-7 00:35 | 只看该作者
maqianqu 发表于 2023-1-6 17:51
如果使用指令,怎么实现1ms级别的延时?

调用库中提供的延时函数

使用特权

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

本版积分规则

446

主题

2675

帖子

37

粉丝