W800和W801小小白级入门记录03

发布者:平和的心情最新更新时间:2022-08-04 来源: csdn 手机看文章 扫描二维码
随时随地手机看文章

折腾了这么久,感觉对我来说真的是一步一个坑,可能和我也不是专业做单片机开发有关,以前接触单片机真的很少,只用过keil5开发STC15的程序,说实话真相把它扔零件箱里吃灰了。之前灯能亮起来了,这次来做个按键采集吧。记录紧接上文,来了。


7、采集个按键

板载2个按键,BOOTMODE和REST,BOOTMODE竟然就是PA0,此处浪费3小时。翻了好多文档,都没有说明BOOTMODE按键就是PA0,我也真是服了。差点我就以为BOOTMODE不能当IO来用,但是文档上又写的IO,就是不写IO几,也许厂家的工程师认为我这种小白不太适合做单片机的开发啊,哈哈。


代码很简单,tls_gpio_read就行了,也是SDK里面找。


u8 k;


......


k=tls_gpio_read(WM_IO_PA_00);

printf("n input=%d n",k);

delay(500000);


说实话,这个SDK真的帮开发者做了很多工作,各种IO的定义都一个函数实现,也不用看寄存器手册了,就是封装的命名规则还得适应一段时间,另外,这种封装的SDK就算完全掌握了也就是针对这一类的单片机,换个其它厂商的单片机,还得重新学习了。


做完按键采集,又仔细对比了W800和W801,毕竟800只有801的1/4大小,IO也少,但是价格却一样,咨询了厂家就是10k的量,这两个价格也是一样的,我也是服了。




既然能按键了,那么就来个中断吧,也不能在循环里一直判断按键啊,而且这样子反应和延迟都又问题,只是能识别能按了而已。


那就来中断了,还是那句话,得看SDK,和STC的开发完全不一样啦,又是几个小时的文档阅读,得出以下几行关键点,直接把代码和关键点全上了,写的麻烦,累了,要睡觉。



8、按键产生个中断

关键点

static void demo_gpio_isr_callback(void *context)//中断调用函数

{

    u16 ret;

    ret = tls_get_gpio_irq_status(WM_IO_PA_00);//取得状态,为什么返回是1才能执行呢?    

    if (ret){

xxxxxxxxxxxx干点啥?xxxxxxxxxxx

        tls_clr_gpio_irq_status(WM_IO_PA_00);        //清除中断

    }

}


void UserMain(void)

{

     tls_gpio_cfg(WM_IO_PA_00, WM_GPIO_DIR_INPUT, WM_GPIO_ATTR_FLOATING);//配置管脚

    tls_gpio_isr_register(WM_IO_PA_00, demo_gpio_isr_callback, NULL);//注册中断

    tls_gpio_irq_enable(WM_IO_PA_00, WM_GPIO_IRQ_TRIG_RISING_EDGE);//启用的意思吗?

}


全部代码:


#include "wm_include.h"

int t;


static void demo_gpio_isr_callback(void *context)//中断调用函数

{

    u16 ret;


    ret = tls_get_gpio_irq_status(WM_IO_PA_00);//取得状态,为什么返回是1才能执行呢?    

    if (ret){

        t=t*0.8;

        if (t<5000){t=3000000;};

        printf("n It's a break %d delay time change to=%d n",ret,t);

        tls_clr_gpio_irq_status(WM_IO_PA_00);        //清除中断

    }

}


void UserMain(void)

{

//#if DEMO_CONSOLE

//    CreateDemoTask();

//#endif

//用户自己的task


    printf("n user task n");    

    

    u8 i,pp,k;    

    i=0,t=3000000;pp=0x01;

    

    //初始IO

    tls_gpio_cfg(WM_IO_PB_00,WM_GPIO_DIR_OUTPUT,WM_GPIO_ATTR_PULLLOW);

    tls_gpio_cfg(WM_IO_PB_01,WM_GPIO_DIR_OUTPUT,WM_GPIO_ATTR_PULLLOW);

    tls_gpio_cfg(WM_IO_PB_02,WM_GPIO_DIR_OUTPUT,WM_GPIO_ATTR_PULLLOW);


    tls_gpio_cfg(WM_IO_PA_00, WM_GPIO_DIR_INPUT, WM_GPIO_ATTR_FLOATING);//配置管脚

    tls_gpio_isr_register(WM_IO_PA_00, demo_gpio_isr_callback, NULL);//注册中断

    tls_gpio_irq_enable(WM_IO_PA_00, WM_GPIO_IRQ_TRIG_RISING_EDGE);//启用的意思吗?

    

    while (1)

    {

        i++;

        printf("n TEST%d n",i);//可以输出到控制台烧录工具就能看到,很好很开心

        

        if (pp>0x04){pp=0x01;}

        tls_gpio_write(WM_IO_PB_00,pp&0x01^pp);//写入IO

        tls_gpio_write(WM_IO_PB_01,pp&0x02^pp);

        tls_gpio_write(WM_IO_PB_02,pp&0x04^pp);

        

        printf("n delay time=%d n",t);

        if (i>32760){i=0;};

        pp=pp<<1;

        delay(t);             //这个秒怎么算的?还没搞明白

    }

}


引用地址:W800和W801小小白级入门记录03

上一篇:W800和W801小小白级入门记录02
下一篇:Neptune(W800芯片)开发板食用指南-SDK篇

推荐阅读最新更新时间:2024-11-09 12:37

单片机---HLK-W801图形框架LVGL下开发(四)
2022年3月24日效果,增加了汉化,APP包括温湿度,计算器,wifi连接,在wifi连接状态下,能够进行NTP时间同步及查询天气。 海凌科w801开发的单片机主机 本章重点 之前的版本,说是在w801下开发,也只是硬件是w801,而软件依旧用的是w806的代码框架,原因还是w806的代码框架逻辑十分清晰,使用起来也简单明了。 不过经过一天的奋战,还是将所有部分都移植到了w801的代码框架上了,为的就是能上网啊。 真是年轻人为了上网,啥都做得出来 最新版本LVGL移植 还是简单的步骤,将源码和头文件放在到工程中,我放在了src下的app中 然后就是编译,可能会报一些函数引用的问题,调整下头文件包含的顺序即可。别问我为
[单片机]
单片机---HLK-W801图形框架LVGL下开发(四)
W800/W801学习记录FreeRTOS操作系统部分(一):任务系统
前言 在官方提供的SDK中,使用的是FreeRTOS实时操作系统。但使用时和一般的FreeRTOS不同,因为它对一些函数进行了改造,直白点来说就是披上了一层皮。本章对SDK中的FreeRTOS的任务系统进行阐述和解析。 一、启动方式 在上图可以看到,芯片在上电后运行启动文件,然后进行初始化。用户在main.c的void UserMain(void)函数里面编写自己的程序。 二、任务创建与删除 1.任务创建函数 tls_os_status_t tls_os_task_create(tls_os_task_t *task, //任务句柄 const char* name, //名称
[单片机]
<font color='red'>W800</font>/<font color='red'>W801</font>学习<font color='red'>记录</font>FreeRTOS操作系统部分(一):任务系统
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved