开这个帖子是要告诉大家,我想基于现在的rtt发展出一个新的版本。为啥?因为我想全面抛弃现在的rt_device_xxx接口,尽量用标准接口写应用代码。
虽然诉求很简单,但路途遥远,先定一个小目标:0.0.5版实现 posix消息队列、管道、串口的阻塞/非阻塞。项目名还没想好(求大家帮忙像个名字内容不限)。
给这个项目立下了五大中心思想:实用、稳定、标准、借鉴、创新。如果你有什么无理过分中肯的建议都可以给我留言。为了这个遥远的目标我已悄悄的做出了
如下改变:
[i=s] 本帖最后由 heyuanjie87 于 2019-8-17 23:39 编辑 [/i]
由于工作要用到4G上网,计划在rtt中实现usb host驱动 移远ec20实现ppp上网,目前已经在f407上初步测试串口收发通过,也正在对host框架进行改写 接口行尽量靠近linux,这样可以节约思考时间和移植现成的类驱动,欢迎各位大佬前来指导工作https://gitee.com/heyuanjie87/rt-thread.lab/blob/master/components/drivers/usb/usbhost/class/cdc_acm.c
https://gitee.com/heyuanjie87/bsp-stm32/blob/master/libraries/chip-f4xx/drv_usbh.c
串口框架增加485的读写切换优化:
在应用中没用定时器切换收发的情况下,mcu太忙后会错过接收。针对这种情况可以在驱动中等待发完最后一个字节就立即切换。在stm32中发送完成中断正好可以达到这个效果。在框架层增加了一个成员”halfduplex”驱动层初始化为1则表示启动485特性。
驱动参考:https://gitee.com/heyuanjie87/bsp-stm32/blob/master/libraries/chip-f4xx/drv_usart.c (函数stm32_uart_rde)
BSP参考: https://gitee.com/heyuanjie87/bsp-stm32/blob/master/stm32f407-lybmf/board/bd_usart.c
框架参考: https://gitee.com/heyuanjie87/rt-thread.lab/blob/master/components/drivers/serial/serial.c (函数_halfduplex_change_mode)
测试结果:
终端执行: echo 01234567890123456789 :dev/uart1
调试助手接收: [18:45:19.578] 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39
接收个数统计:20
给串口框架增加在应用修改缓冲区大小的操作,按需分配不浪费每一滴空间不让每一个期待失望。
libmodbus应用参考:https://gitee.com/heyuanjie87/libmodbus/blob/master/tests/modbus_rtu_test.c