Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
RT-Thread/STM32F103VB 0.3.0 beta版本
发布于 2009-03-26 23:21:12 浏览:32176
订阅该版
从RT-Thread 0.3.0的STM32F103ZE版本中分支出来,主要对原来0.2.4版本中firmware进行更新,更新到ST的2.0.3版本。由于ST的STM Firmware v2.0.3是和STM32F103E评估版一起推出的,所以里面带了E系列的一些功能,但这些是VB系列所不需要的,所以把其中一些不必要的进行剪裁。 这个版本的默认配置如下: RT-Thread Kernel + FinSH 内核对象名称大小 8字节 线程支持优先级 32 每个tick时长 10ms 使用Hook 使用Semaphore,Mutex 使用Event,MailBox,Message Queue 使用Memory Pool,Small Memory的Heap管理 使用FinSH,并支持符号表、符号描述 ![rt-thread-0.3.0-stm32f103vb.zip](/uploads/53_4c86717f3eebd89bb60e3d7c90c60089.zip)
查看更多
54
个回答
默认排序
按发布时间排序
dragonwww
2009-03-27
这家伙很懒,什么也没写!
效率如此之高,佩服佩服 [s:157] 忽然想起了孙悟空去东海龙宫寻兵器,到定海神针铁面前说到:再细点、再小点!最终眼睛一亮:金箍棒出世了!
bernard
2009-03-30
这家伙很懒,什么也没写!
>效率如此之高,佩服佩服 [s:157] >忽然想起了孙悟空去东海龙宫寻兵器,到定海神针铁面前说到:再细点、再小点!最终眼睛一亮:金箍棒出世了! --- dragonwww,你有STM32F103VB的开发板吗?万利 还是 那种Mini版本的? 能否说说你的情况, 1、学习 or 用于产品 2、运用于哪方面?(上次你似乎说了是连GPRS模块的) 3、对OS的需求
dragonwww
2009-03-30
这家伙很懒,什么也没写!
我的情况是:买的是万利的STM32F103VB的开发板,当然想是用于产品,但现在对OS还是不太熟悉,还在学习阶段。 我最初是用汇编玩单片机的,后来用了C51,现在觉得STM32很牛X,所以想转向它,有了它就想上个OS,这不,盯上RT-Thread了 [s:160] 想用到无线数传上,想加GPRS和GPS模块,现在想法是有了,关键是如何实现了,OS和C51的编程还是很不同的,我说过我是一名伪程序员,不是科班出身的,所以对我来说还是有点难度的。 至于对OS的需求,我觉得稳定、简单、好用最重要,而且可能到时连STM32F103VB都不用,会用更便宜的STM32F103R系列的,64pin,对于产品来说成本很重要。 再说点个人感受:大多数嵌入式的串口资源很宝贵的,所以FinSH对我来说用途不大,何况它要占用一个串口,产品运行起来也不会通过它来调试的。
bernard
2009-03-30
这家伙很懒,什么也没写!
>我的情况是:买的是万利的STM32F103VB的开发板,当然想是用于产品,但现在对OS还是不太熟悉,还在学习阶段。 >我最初是用汇编玩单片机的,后来用了C51,现在觉得STM32很牛X,所以想转向它,有了它就想上个OS,这不,盯上RT-Thread了 [s:160] >想用到无线数传上,想加GPRS和GPS模块,现在想法是有了,关键是如何实现了,OS和C51的编程还是很不同的,我说过我是一名伪程序员,不是科班出身的,所以对我来说还是有点难度的。 >至于对OS的需求,我觉得稳定、简单、好用最重要,而且可能到时连STM32F103VB都不用,会用更便宜的STM32F103R系列的,64pin,对于产品来说成本很重要。 >再说点个人感受:大多数嵌入式的串口资源很宝贵的,所以FinSH对我来说用途不大,何况它要占用一个串口,产品运行起来也不会通过它来调试的。 --- 如果你确定下来把RT-Thread用于产品中,可以获得RT-Thread的免费技术支持: - 12小时内Email/论坛答复 - 和OS相关的问题追踪及修复 - (软件)系统设计上的咨询 至于用STM32哪个系列这个需要你来定了,RT-Thread最小的基本系统基本要求是:10K ROM,2KRAM。STM32F103R6/8都能满足,STM32F103R6资源稍微紧张些。 RT-Thread是一个可裁剪的系统,如果是用GCC作为开发环境这点尤为明显,所以FinSH如果不需要,只需要在rtconfig.h中把相应的宏注释掉,在工程中删除掉finsh group就可以了。
dragonwww
2009-03-30
这家伙很懒,什么也没写!
to bernard: 你的回复更加坚定了我用RT-Thread的信心了,不过对于我这伪程序员可能会给你们添不少麻烦,要有心理准备啊 [s:154] 其实真的挺羡慕你们:可以全身心的去投入到自己喜欢做的事情中去,可以看着自己的孩子--RT-Thread慢慢长大,人生在世,总得留下点什么才好,呵呵,扯远了。
dragonwww
2009-03-30
这家伙很懒,什么也没写!
另外报告一下:简单的注释掉#define RT_USING_FINSH还不够, start_rvds.s中把USART1的中断处理函数USART1_IRQHandler重定向到了rt_hw_uart_rx_int,而 board.c中rt_hw_uart_rx_int用的#ifdef RT_USING_FINSH预处理,简单的注释掉会产生一个Error: L6218E: Undefined symbol rt_hw_uart_rx_int (referred from start_rvds.o). 所以我觉得还应该在start_rvds.s中改回来: ;IMPORT rt_hw_uart_rx_int IMPORT USART1_IRQHandler .... ;DCD rt_hw_uart_rx_int DCD USART1_IRQHandler 不知道官方答案是什么啊? [s:157]
bernard
2009-03-30
这家伙很懒,什么也没写!
是的,目前确实是这样。 这个也仅仅针对于STM32的移植才是这样的,而接下去几天会给一个修正的,带串口通用设备接口的版本。这个版本将不存在这个问题。。。
dragonwww
2009-04-03
这家伙很懒,什么也没写!
请问新版本何时放出? 另外有个问题请教:多串口操作时我使用两个串口,速率都是115200,开了三个线程,思路是开两个缓冲区,设两个信号量,串口中断中保持字串到各自的缓冲区,收到字符结束时发送信号量,主程序中负责处理数据的线程查询信号量进行处理,也就是把收到的字串再打印出来,单独操作时每个都是好用的,但两个同时工作时就会乱码,不知是哪里的问题啊?我在中断函数中使用下面的结构还是有乱码,我改到tick为1ms也没解决, /* enter interrupt */ rt_interrupt_enter(); /* do interrupt service routine */ /* leave interrupt */ rt_interrupt_leave(); rt_hw_interrupt_thread_switch(); 请问串口中断中用不用上面的结构?多串口编程采用什么结构可以更稳定?多谢!
bernard
2009-04-03
这家伙很懒,什么也没写!
不知道你是如何处理的。说说我会采用的设计:(结合新版的串口设备接口) 串口驱动包含三个回调函数: rx_indicate(rt_device_t dev, rt_size_t size); tx_complete(rt_device_t dev, void* buffer); status_indicate(rt_device_t dev, rt_uint32 status); rx会在接收到数据时调用,size给出接收到的数据长度。 tx会在发送完成时调用,buffer给出发送完的数据块指针。 status会在出错或设备状态(例如网络接口设备link down、link up)改变时调用 假设两个串口分别是UART0, UART1 那么处理线程可以是(假设只需要处理接收,而发送是采用polling方式): 初始化部分代码: ``` rt_device_t device; // 获得UART0的设备句柄 device = rt_device_lookup("UART0"); rt_device_set_rx_ind(device, mythread_rx_ind); // 获得UART1的设备句柄 device = rt_device_lookup("UART1"); rt_device_set_rx_ind(device, mythread_rx_ind); /* 创建一个mailbox */ mymailbox = rt_mb_create(...) ``` 处理线程: ``` // 消息定义 #define MSG_RX_IND 1 struct mythread_msg { rt_uint8_t msg_type; rt_device_t dev; }; // 处理线程入口 mythread_entry() { struct mythread_msg* msg; char buffer[128]; rt_uint32_t length; while (1) { // 从信箱接收消息 if (rt_mb_recv(mymailbox, &msg) == RT_EOK) { if (msg->msg_type == MSG_RX_IND) { length = rt_device_read(msg->dev, &buffer[0], 0, 128); if (length == 0) continue; /* 数据处理,放在buffer中,长度是length */ ... } /* 释放消息内存块 */ rt_free(msg); msg = RT_NULL; } } } // 数据到达回调函数 void mythread_rx_ind(rt_device_t device, rt_size_t size) { struct mythread_msg *msg; /* 因为是通过邮箱发送消息的地址,所以需要动态分配个消息结构 */ msg = (struct mythread_msg *)rt_malloc(sizeof(struct mythread_msg)); if (msg != RT_NULL) { /* 填充消息 */ msg->dev = device; msg->msg_type = MSG_RX_IND; /* 发送到信箱 */ rt_mb_send(mymailbox, msg); } } ```
bernard
2009-04-03
这家伙很懒,什么也没写!
使用以上的这种方式,只需要使用一个线程就可以了。 新版本我会尽快放出,其中就包含新版本的设备驱动接口。
撰写答案
登录
注册新账号
关注者
0
被浏览
32.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
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
7
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部