搜索

[8/16位单片机] 【CuriosityNano测试报告】+ AVR128DA48之按键测试和MAIN文件函数

[复制链接]
1279|3
 楼主 | 2020-8-13 10:22 | 显示全部楼层 |阅读模式
    本来准备驱动LCD5110显示屏的,但调试多日均无收获,只好先测试按键。首先开始的是按键的轮询方式,在主循环中捕捉按键,由于LCD显示尚未调试完毕,无法观看按键效果,只好用改变LED闪烁频率来体现,下面是相关的测试代码:
int main(void)
{
    uint16_t wait,i;
    wait = 100;

    /* Initializes MCU, drivers and middleware */
    SYSTEM_Initialize();

    LED_Y_SetHigh();
    /* Replace with your application code */
//    LCD_init();
    LED_Y_SetLow();

//    Display_main();

    while (1){
        LED_Y_Toggle();
        delay_ms(wait);
//        Display_main();

        if(0 == KEY_0_GetValue()){
            wait <<= 1;
            if(wait > 2000)
                wait = 100;

//            Display_main();
        }

    }
}


    测试过程中发现,由于系统生成的_delay_ms()函数只能接收常量参数,所以只有自定义延时函数,但自定义的延时函数在MAIN文件中无论是出现在何处,编译虽能顺利通过,但延时并不起作用,只能将函数写在其他文件中,然后通过include包含头文件,这个函数才能有效,这也许是编译器的问题,不知道其他的坛友有没有发现这个问题,厂家测试过没有?
    由于LED闪烁是通过空循环延时实现的,所以影响到轮询按键的操作效果,下一步准备测试按键的中断方式,同时通过定时器来控制LDE的闪烁,这样体验的效果会更好些。
    下面是测试项目的压缩包:
mytest.X.rar (202.91 KB, 下载次数: 0)

使用特权

评论回复
| 2020-8-13 11:10 | 显示全部楼层
你可以看编译器手册, 关于_-delay_xxxx相关的内容的,

725135f34aea1d6172.png

使用特权

评论回复
 楼主 | 2020-8-13 14:21 | 显示全部楼层
CoolSilicon 发表于 2020-8-13 11:10
你可以看编译器手册, 关于_-delay_xxxx相关的内容的,

    所以我只有自己写一个函数来接收变量参数了,但这个函数写在MAIN.c文件中没有作用,只有写在其他文件中才起作用,不知道是何原因。

使用特权

评论回复
| 2020-8-13 21:18 | 显示全部楼层
谢谢分享【AVR128DA48之按键测试】

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表