Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
RT-Thread/STM32F103VB 0.3.0 beta3版本
发布于 2009-05-04 20:32:00 浏览:18248
订阅该版
这个版本更新有些多,RT-Thread/STM32F103VB 0.3.0 beta3更改记录: - 内核,添加IAR EWARM 5.x工程,在内核定义中做相应的平台定义; - 添加文件系统组件DFS,DFS是一套虚拟文件系统(类似Linux的VFS,但几乎不占用空间) - 添加文件系统DFS-EFSL:把著名的FAT文件系统实现EFSL引入到DFS中,同时对它的不足进行修改:重写文件系统缓冲层;添加多扇区读写支持。(我们自己实现的DFS-FAT还在进行压力测试中,测试完毕后也会放出) - STM32固件库更新到2.0.3patch1 简而言之,RT-Thread/STM32F103VB 0.3.0 beta3是一个RTOS + Shell(finsh) + VFS(DFS + EFSL(FAT16/32)),并且文件系统已在万利STM32开发板SPI SDCard上验证通过(大范围的SD/MMC卡还有待验证)。 有用的链接: RT-Thread官方网站:http://www.rt-thread.org RT-Thread官方论坛:http://www.rt-thread.org/phpbb/ 内核API在线文档:http://www.rt-thread.org/rt-thread/rttdoc_0_2_3 RT-Thread编程指南(未完成):http://www.rt-thread.org/phpbb/viewtopic.php?f=2&t=195 到目前为止,不管您是使用RealView MDK还是IAR EWARM,您都可以尝试使用RT-Thread。后续我们会进行IAR EWARM集成开发环境插件的尝试,有思路的大虾还请给出您宝贵的建议。 下载附件 [rt-thread 0.3.0.zip](https://oss-club.rt-thread.org/uploads/53_b93dcb9170b0e90ba746d51adde3ac43.zip)
查看更多
31
个回答
默认排序
按发布时间排序
pupist
2009-05-04
这家伙很懒,什么也没写!
sdcard init failed 优先级80超范围
bernard
2009-05-05
这家伙很懒,什么也没写!
多谢提醒: application.c,153行,应该为 2048, **12**, 20); sdcard init failed,请给出你板子的情况,SD卡的情况。另外,你是否在你的板子上成功使用过SD卡,如果成功使用过,可以类似的修改msd.c文件。
bernard
2009-05-05
这家伙很懒,什么也没写!
>> application.c,153行,应该为 2048, 12, 20); 这个我已经修改过来了,新下载就不会有这个问题。
LEAN
2009-05-07
这家伙很懒,什么也没写!
恭喜RTT新版本发布! 晚上下回去试试。
dragonwww
2009-05-15
这家伙很懒,什么也没写!
要买的OLED还没到,终于可以看看软件了,有两点不明白,向老大请教: 1. RT_USING_DFS是在哪定义的?我本以为是在rtconfig.h中,可我搜了一下并未发现。 2. 多串口的编程模型还是看的有点晕,串口是用中断还是DMA?比如我如何向三个串口都进行格式化输出?如何设定某个串口的条件接收(比如遇到\r\n,或以“(”开始,以“)”为结束的一段字符就发送消息 进行处理)。 这个版本的使用手册还编吗?还是说用以前的在线手册?可这版和以前的不太一样啊,自己要努力研究一下了 [s:157]
dragonwww
2009-05-15
这家伙很懒,什么也没写!
阅读中。。。 发现: * Use UART1 as console output and finsh input * interrupt Rx and poll Tx (stream mode) * * Use UART2 with DMA Rx and poll Tx -- DMA channel 6 * Use UART3 with DMA Tx and interrupt Rx -- DMA channel 2 DMA应该最好用,但是自己没有用过,自己理解它无法完成条件接收,对于接收长度未知的字符串不知道如何用DMA?
bernard
2009-05-15
这家伙很懒,什么也没写!
包含文件系统的是一个单独的工程,所以RT_USING_DFS是直接在工程的预处理里定义的。 文档还做准备中,设备这个章节可以考虑提前放出来,周末吧(希望周末没什么事,因为里面包含一个AT91SAM7S串口设备的例子)。 STM32的三个串口初始化部分都是在uart.c中做的,这样方便用户自行定义各个串口设备的模式。未知长度DMA接收,可以考虑这样:先用中断模式接收一个头,收到头之后判断出长度,然后启用DMA传输,也就是说这个串口设备的接收模式是动态切换的。
dragonwww
2009-05-15
这家伙很懒,什么也没写!
那还挺麻烦,不行我就先全改成中断条件接收,查询发送吧,先用起来再说。 另:我在usart.c和 board.c中都看到了 RCC_Configuration,只是一个是static,如下: static void RCC_Configuration(void) void RCC_Configuration(void) 我对文件的结构不是太熟悉,初始化时会调用哪个呢? 还有就是没发现 EXTI_Config,再接着看。。。
bernard
2009-05-15
这家伙很懒,什么也没写!
都会调用,static的调用只会在本文件有效。 是的,使用不同模式的串口,设置是比较复杂,例如UART2: ``` #ifdef RT_USING_UART2 /* stm32_serial_int_rx,stm32_serial_dma_rx是中断模式和DMA模式下接收需要的数据结构。 采用不同的模式需要不同的数据结构,然后赋值到stm32_serial_device结构中: struct stm32_serial_device { USART_TypeDef* uart_device; /* rx structure */ struct stm32_serial_int_rx* int_rx; struct stm32_serial_dma_rx* dma_rx; /* tx structure */ struct stm32_serial_int_tx* int_tx; struct stm32_serial_dma_tx* dma_tx; }; 上面这个是stm32_serial_device结构的定义。 */ struct stm32_serial_int_rx uart2_int_rx; struct stm32_serial_dma_rx uart2_dma_rx; struct stm32_serial_device uart2 = { USART2, &uart2_int_rx, &uart2_dma_rx, RT_NULL, RT_NULL }; struct rt_device uart2_device; #endif /* 然后就是各个模式下的初始化,例如中断初始化,DMA初始化等 */ /* * Init all related hardware in here * rt_hw_serial_init() will register all supported USART device */ void rt_hw_usart_init() { USART_InitTypeDef USART_InitStructure; USART_ClockInitTypeDef USART_ClockInitStructure; /* 时钟初始化 */ RCC_Configuration(); /* GPIO复用初始化 */ GPIO_Configuration(); /* 中断初始化 */ NVIC_Configuration(); /* DMA初始化 */ DMA_Configuration(); /* 上面这几个初始化都用文件内的函数,因为已经声明为static了,只在文件内有效 */ /* uart init */ #ifdef RT_USING_UART1 /* UART1的初始化 */ USART_InitStructure.USART_BaudRate = 115200; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_ClockInitStructure.USART_Clock = USART_Clock_Disable; USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge; USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable; USART_Init(USART1, &USART_InitStructure); USART_ClockInit(USART1, &USART_ClockInitStructure); /* 在RT-Thread中注册设备 */ rt_hw_serial_register(&uart1_device, "uart1", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, &uart1); /* 因为是中断接收,所以需要配置中断 */ USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); #endif #ifdef RT_USING_UART2 /* UART2初始化 */ USART_InitStructure.USART_BaudRate = 115200; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_ClockInitStructure.USART_Clock = USART_Clock_Disable; USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge; USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable; USART_Init(USART2, &USART_InitStructure); USART_ClockInit(USART2, &USART_ClockInitStructure); /* 设置使用的DMA通道,STM32里DMA通道对外设是固定的,在文件头有份说明 */ uart2_dma_rx.dma_channel= UART2_RX_DMA; /* 在RT-Thread中注册设备 */ rt_hw_serial_register(&uart2_device, "uart2", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_DMA_RX, &uart2); /* DMA方式接收,使能DMA接收请求(实际的接收并没开始,在Open这个设备时才真正开始) */ USART_DMACmd(USART2, USART_DMAReq_Rx , ENABLE); #endif #ifdef RT_USING_UART3 /* UART3初始化 */ USART_InitStructure.USART_BaudRate = 115200; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_ClockInitStructure.USART_Clock = USART_Clock_Disable; USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge; USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable; USART_Init(USART3, &USART_InitStructure); USART_ClockInit(USART3, &USART_ClockInitStructure); /* DMA发送的channel */ uart3_dma_tx.dma_channel= UART3_TX_DMA; /* 在RT-Thread中注册设备 */ rt_hw_serial_register(&uart3_device, "uart3", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_DMA_TX, &uart3); /* 使能DMA发送请求,但只在往设备写的时候才开始传送数据 */ USART_DMACmd(USART3, USART_DMAReq_Tx , ENABLE); /* 中断方式接收,所以还需要配置接收中断 */ USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); #endif } ``` 有问题尽管提出来,我看到了会直接解答的。
dragonwww
2009-05-15
这家伙很懒,什么也没写!
呵呵,要是放出的beta3的代码都像上面这样加上中文注释就爽了,期待文档早日放出,让我等专业业余爱好者也能自如运用 [s:154]
撰写答案
登录
注册新账号
关注者
0
被浏览
18.2k
关于作者
bernard
这家伙很懒,什么也没写!
提问
414
回答
5940
被采纳
76
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
8
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
3
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部