rt-thread posix 接口之pin设备使用

rt-thread posix接口之pin设备使用

今年年中时在线听RTT全国技术大会,当时有关于posix接口的内容,关于其posix接口,之前一直有使用文件系统接口以及网络socket接口,这次尝试一下用posix接口操作普通外设,就用pin设备来试试吧

实践

1、硬件板

   自己很早之前网购的 落灰牌GD32f450开发板

2、软件版本

   RT-Thread 4.1.1,使用官方IDE以导入bsp的方式导入了gd32f450的bsp
2.1 posix接口操作pin示例
#include <stdio.h>
#include <rtthread.h>

#include <dfs_posix.h> /* 当需要使用文件操作时,需要包含这个头文件 */
#include <sys/ioctl.h>

#include <rtdevice.h>
#include "drv_gpio.h"


#define LED_PIN   GET_PIN(C, 0)

rt_uint16_t pin;
    rt_uint16_t status;

typedef struct {
    uint16_t pin;
    uint16_t mode;
} pin_mode_t;

typedef struct {
    uint16_t pin;
    uint16_t status;
} pin_value_t;

pin_value_t led_pin;
pin_mode_t led_mode;

int main(void)
{
    /* 注意: pin 设备会自动注册在/dev目录下 */
    int fd = open("/dev/pin", O_RDWR);
    rt_kprintf("fd:%d\n ", fd);

    /* 设置IO 模式 */
    led_mode.pin = LED_PIN;
    led_mode.mode = PIN_MODE_OUTPUT;
    ioctl(fd, 0, &led_mode);

    led_pin.pin = LED_PIN;
    led_pin.status = 1;
    
    while (1) {

        rt_thread_delay(200);

        led_pin.status ^= 0x01;
        write(fd, &led_pin, sizeof(led_pin));

    }

    return 0;
}
2.2 相关工程配置
   #define RT_USING_DFS_ELMFAT

/* elm-chan's FatFs, Generic FAT Filesystem Module */

#define RT_DFS_ELM_CODE_PAGE 437
#define RT_DFS_ELM_WORD_ACCESS
#define RT_DFS_ELM_USE_LFN_0
#define RT_DFS_ELM_USE_LFN 0
#define RT_DFS_ELM_LFN_UNICODE_0
#define RT_DFS_ELM_LFN_UNICODE 0
#define RT_DFS_ELM_MAX_LFN 255
#define RT_DFS_ELM_DRIVES 2
#define RT_DFS_ELM_MAX_SECTOR_SIZE 512
#define RT_DFS_ELM_REENTRANT
#define RT_DFS_ELM_MUTEX_TIMEOUT 3000
/* end of elm-chan's FatFs, Generic FAT Filesystem Module */
#define RT_USING_DFS_DEVFS

/* Device Drivers */

#define RT_USING_DEVICE_IPC
#define RT_USING_SYSTEM_WORKQUEUE
#define RT_SYSTEM_WORKQUEUE_STACKSIZE 2048
#define RT_SYSTEM_WORKQUEUE_PRIORITY 23
#define RT_USING_SERIAL
#define RT_USING_SERIAL_V1
#define RT_SERIAL_USING_DMA
#define RT_SERIAL_RB_BUFSZ 64
#define RT_USING_PIN

/* C/C++ and POSIX layer */

#define RT_LIBC_DEFAULT_TIMEZONE 8

/* POSIX (Portable Operating System Interface) layer */

#define RT_USING_POSIX_FS
#define RT_USING_POSIX_DEVIO
#define RT_USING_POSIX_STDIO
#define RT_USING_POSIX_POLL
#define RT_USING_POSIX_SELECT
#define RT_USING_POSIX_DELAY
#define RT_USING_POSIX_CLOCK
#define RT_USING_POSIX_TIMER
#define RT_USING_PTHREADS
#define PTHREAD_NUM_MAX 8

参考文件

两篇和此相关的pdf,具体见:https://gitee.com/jiezhi3200/docs

《RT-Thread 中的 POSIX 支持-2022 RTT全球技术大会.pdf》
《设备驱动及 POSIX 对接分析与实践-2022 RTT全球技术大会.pdf》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值