WIFI模块开发教程之W600基础篇2:点亮LED灯

一、简述:

本文使用RT_Thread通用GPIO设备驱动进行控制IO口,我们需要了解GPIO设备驱动框架,同时也要驱动LED灯完成本节实验目的。

二、GPIO设备驱动框架:

IO设备驱动框架综述:

RT_Thread IO设备模型框架位于硬件和应用层之间,共分成三层,从上到下分别是 I/O 设备管理层、设备驱动框架层、设备驱动层。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LeaVa25r-1586437678761)(https://s1.51cto.com/images/blog/202001/10/37a966396a12f5292fea75a3c256534a.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)]
设备驱动框架层是对同类硬件设备驱动的抽象,将不同厂家的同类硬件设备驱动中相同的部分抽取出来,将不同部分留出接口,由驱动程序实现。

PIN设备说明

我们这里控制LED灯,需要使用PIN设备驱动框架,RT_Thread PIN设备支持接口如下图所示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CFAlMYBz-1586437678762)(https://s1.51cto.com/images/blog/202001/10/e9eff10870c38f64ad22a6afbd7707c7.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)]
获取引脚编号

/** wm_io.h中引脚定义如下*/
enum tls_io_name {
WM_IO_PA_00 = 0,    /**< gpio a0 */
WM_IO_PA_01,        /**< gpio a1 */
WM_IO_PA_02,        /**< gpio a2 */
WM_IO_PA_03,        /**< gpio a3 */
WM_IO_PA_04,        /**< gpio a4 */
WM_IO_PA_05,        /**< gpio a5 */
WM_IO_PA_06,        /**< gpio a6 */
WM_IO_PA_07,        /**< gpio a7 */
WM_IO_PA_08,        /**< gpio a8 */
WM_IO_PA_09,        /**< gpio a9 */
WM_IO_PA_10,        /**< gpio a10 */
WM_IO_PA_11,        /**< gpio a11 */
WM_IO_PA_12,        /**< gpio a12 */
WM_IO_PA_13,        /**< gpio a13 */
WM_IO_PA_14,        /**< gpio a14 */
WM_IO_PA_15,        /**< gpio a15 */

WM_IO_PB_00,        /**< gpio b0 */
WM_IO_PB_01,        /**< gpio b1 */
WM_IO_PB_02,        /**< gpio b2 */
WM_IO_PB_03,        /**< gpio b3 */
WM_IO_PB_04,        /**< gpio b4 */
WM_IO_PB_05,        /**< gpio b5 */
WM_IO_PB_06,        /**< gpio b6 */
WM_IO_PB_07,        /**< gpio b7 */
WM_IO_PB_08,        /**< gpio b8 */
WM_IO_PB_09,        /**< gpio b9 */
WM_IO_PB_10,        /**< gpio b10 */
WM_IO_PB_11,        /**< gpio b11 */
WM_IO_PB_12,        /**< gpio b12 */
WM_IO_PB_13,        /**< gpio b13 */
WM_IO_PB_14,        /**< gpio b14 */
WM_IO_PB_15,        /**< gpio b15 */
WM_IO_PB_16,        /**< gpio b16 */
WM_IO_PB_17,        /**< gpio b17 */
WM_IO_PB_18,        /**< gpio b18 */
WM_IO_PB_19,        /**< gpio b19 */
WM_IO_PB_20,        /**< gpio b20 */
WM_IO_PB_21,        /**< gpio b21 */
WM_IO_PB_22,        /**< gpio b22 */
WM_IO_PB_23,        /**< gpio b23 */
WM_IO_PB_24,        /**< gpio b24 */
WM_IO_PB_25,        /**< gpio b25 */
WM_IO_PB_26,        /**< gpio b26 */
WM_IO_PB_27,        /**< gpio b27 */
WM_IO_PB_28,        /**< gpio b28 */
WM_IO_PB_29,        /**< gpio b29 */
WM_IO_PB_30,        /**< gpio b30 */
WM_IO_PB_31         /**< gpio b31 */
};

硬件原理图如下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AGD8oTAA-1586437678762)(https://s1.51cto.com/images/blog/202001/10/07d47b95a470203a11102648e3b04e1f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)]
TB_01最小系统开发板中LED分别是PB14、PB15、PB16、PB17、PB18,对应RT_Thread中IO编号是19、20、21、22、23,注意这里不是直接使用WM_IO_PB_14、WM_IO_PB_15、WM_IO_PB_16、WM_IO_PB_17、WM_IO_PB_18,目前调试看下来映射的是引脚编号,之后联盛德官方提供的W60x package可能会解决此问题。

三、点灯程序

#include <rtthread.h>
#include <rtdevice.h>

#define W600_IO_LED1    19
#define W600_IO_LED2    20
#define W600_IO_LED3    21
#define W600_IO_LED4    22
#define W600_IO_LED5    23

int main(void)
{
    /* set wifi work mode */
    rt_wlan_set_mode(RT_WLAN_DEVICE_STA_NAME, RT_WLAN_STATION);
    rt_wlan_set_mode(RT_WLAN_DEVICE_AP_NAME, RT_WLAN_AP);

    /* init led */
    rt_pin_mode(W600_IO_LED1, PIN_MODE_OUTPUT);
    rt_pin_mode(W600_IO_LED2, PIN_MODE_OUTPUT);
    rt_pin_mode(W600_IO_LED3, PIN_MODE_OUTPUT);
    rt_pin_mode(W600_IO_LED4, PIN_MODE_OUTPUT);
    rt_pin_mode(W600_IO_LED5, PIN_MODE_OUTPUT);

    while (1)
    {
        rt_pin_write(W600_IO_LED1, PIN_LOW);
        rt_pin_write(W600_IO_LED2, PIN_LOW);
        rt_pin_write(W600_IO_LED3, PIN_LOW);
        rt_pin_write(W600_IO_LED4, PIN_LOW);
        rt_pin_write(W600_IO_LED5, PIN_LOW);
        rt_kprintf("led on\r\n");

        rt_thread_mdelay(2000);

        rt_pin_write(W600_IO_LED1, PIN_HIGH);
        rt_pin_write(W600_IO_LED2, PIN_HIGH);
        rt_pin_write(W600_IO_LED3, PIN_HIGH);
        rt_pin_write(W600_IO_LED4, PIN_HIGH);
        rt_pin_write(W600_IO_LED5, PIN_HIGH);
        rt_kprintf("led off\r\n");

        rt_thread_mdelay(2000);
    }

    return 0;
}

四、编译

1.VSCode环境

打开Env控制程序,cd到bsp/w60x当前目录,输入scons
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n9UooBIh-1586437678763)(https://s1.51cto.com/images/blog/202001/10/3fead7e757e1461813a72595965cce5d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AibWQQU5-1586437678763)(https://s1.51cto.com/images/blog/202001/10/68d7f3a666d4c5c4de0baed0b67650a1.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)]
2.Keil环境
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1zLXbMOd-1586437678763)(https://s1.51cto.com/images/blog/202001/10/55868ed17a4a10077deb93743feb7ee7.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)]

五、烧录运行

使用串口工具烧录,烧录完成后,Log信息如下,符合要求,每隔2秒打印一次信息。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pO7mwTah-1586437678764)(https://s1.51cto.com/images/blog/202001/10/4c14744b1099087f0df3b80ade408d9f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)]
LED结果如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3sa1tkH6-1586437678764)(https://s1.51cto.com/images/blog/202001/10/d8da25664147ee45805e6243647ea731.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w9VmALJb-1586437678764)(https://s1.51cto.com/images/blog/202001/10/1bfd64eee82dd2d50d9d233185843332.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)]

六、结语

(1)获取资料

如您在使用过程中有任何问题,请加QQ群进一步交流

QQ交流群:906015840 (备注:物联网项目交流)

获取源码:关注下方公众号,回复w600即可

一叶孤沙出品:一沙一世界,一叶一菩提
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

物联网客栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值