Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
BSP
stm32f10x串口只能发送数据,无法接收
发布于 2015-12-12 19:10:46 浏览:3629
订阅该版
用串口助手发送后stm32单片机卡住无响应,崩溃了。 调试了一天代码实在不知道是哪里有问题?大家碰到过吗,有什么建议吗? 第一次用RT-Thread,第一次发帖,希望多多照顾。 这是我参考手册写的一部分代码: ``` // 数据到达回调函数 // rt_err_t(*)(rt_device_t dev, rt_size_t size) rt_err_t uart_input(rt_device_t dev, rt_size_t size) { struct rx_msg msg; msg.dev = dev; msg.size = size; // 发送消息到消息队列中 rt_mq_send(rx_mq, &msg, sizeof(struct rx_msg)); return RT_EOK; } static void uart2_thread_entry(void* parameter) { rt_err_t result = RT_EOK; struct rx_msg msg; //int count = 0; rt_device_t stm32_uart2; rt_uint32_t rx_length; // 根据注册名查找设备 stm32_uart2 = rt_device_find("uart2"); if (stm32_uart2 != RT_NULL) { // 初始化设备 rt_device_init(stm32_uart2); // 设置回调函数(当设备接收到数据执行) rt_device_set_rx_indicate(stm32_uart2, uart_input); // 打开设备 rt_device_open(stm32_uart2, RT_DEVICE_OFLAG_RDWR); } rt_device_write(stm32_uart2, 0, &uart_tx_buffer[0], 18); while(1) { // 从消息队列中读取消息 result = rt_mq_recv(rx_mq, &msg, sizeof(struct rx_msg), 50); if (result == -RT_ETIMEOUT) { // 接收超时 //rt_kprintf("timeout count:%d ", ++count); rt_device_write(stm32_uart2, 0, &timeout[0], 12); } // 成功收到消息 else if (result == RT_EOK) { rt_device_write(stm32_uart2, 0, &recvOk[0], 12); rx_length = (sizeof(uart_rx_buffer) - 1) > msg.size ? msg.size : sizeof(uart_rx_buffer) - 1; // 读取消息 rx_length = rt_device_read(msg.dev, 0, &uart_rx_buffer[0], rx_length); uart_rx_buffer[rx_length] = ' '; // 回显观察 //rt_device_write(stm32_uart2, 0, &uart_rx_buffer[0], rx_length); } rt_thread_delay( 10 ); } } int rt_application_init(void) { // 初始化消息队列 rt_mq_init(&my_rx_mq, "mqt", &msg_pool[0], sizeof(struct rx_msg), sizeof(msg_pool), RT_IPC_FLAG_FIFO); rx_mq = &my_rx_mq; // 动态创建 usart2 线程 uart2_id = rt_thread_create("uart2", // 线程名称 uart2_thread_entry, // 线程入口入口函数 RT_NULL, // 线程入口入口函数参数 2048, // 线程栈大小 19, // 线程优先级 10); // 线程时间片大小 if (uart2_id != RT_NULL) rt_thread_startup(uart2_id); .......```
查看更多
7
个回答
默认排序
按发布时间排序
bernard
2015-12-12
这家伙很懒,什么也没写!
打开串口设备需要额外加参数了
qq_Huangtao!
2015-12-12
这家伙很懒,什么也没写!
并没有用的。 我用的是2.0版本,没有用components的serial。自己重写了serial.c和usart.c 打开串口最终调用这个 // 打开设备 ``` static rt_err_t rt_serial_open(rt_device_t dev, rt_uint16_t oflag) { struct stm32_serial_device* uart; // 获得真实的UART设备对象 uart = (struct stm32_serial_device*) dev->user_data; if (dev->flag & RT_DEVICE_FLAG_INT_RX) { // 中断接收模式,使能中断 USART_ITConfig(uart->uart_device, USART_IT_RXNE, ENABLE); //开启中断 接收中断 } return RT_EOK; } void rt_hw_usart_init() { USART_InitTypeDef USART_InitStructure; USART_ClockInitTypeDef USART_ClockInitStructure; RCC_Configuration(); GPIO_Configuration(); NVIC_Configuration(); //DMA_Configuration(); ...... rt_hw_serial_register(&uart2_device, "uart2", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, &uart2); /* enable interrupt */ USART_ITConfig(USART2, USART_IT_RXNE, ENABLE); ``` ...... 其实在这里初始化中断就已经打开了,它在startup.c有调用。 其实我想了下,手册里uart = (struct stm32_serial_device*) dev->user_data;这里的两个不同结构体里面的变量对的上吗?
qq_Huangtao!
2015-12-12
这家伙很懒,什么也没写!
最后还是用了components的serial的,可以了,可能自己写的驱动有错误,哈哈。 解决了。 串口可以收到了!!
labi41
2016-03-17
这家伙很懒,什么也没写!
请问是怎么解决的,我的情况跟你的一模一样。呵呵 原来的1.2版本使用好用的,怎么2.0这么多问题
huang2017
2019-01-02
这家伙很懒,什么也没写!
>请问是怎么解决的,我的情况跟你的一模一样。呵呵 > >原来的1.2版本使用好用的,怎么2.0这么多问题 ... --- 我也是遇到这个问题,能发送不能接收。
huang2017
2019-01-02
这家伙很懒,什么也没写!
>我也是遇到这个问题,能发送不能接收。 --- 最后是怎么解决的,可以分享一下吗
撰写答案
登录
注册新账号
关注者
0
被浏览
3.6k
关于作者
qq_Huangtao!
这家伙很懒,什么也没写!
提问
1
回答
3
被采纳
0
关注TA
发私信
相关问题
1
STM32 407 串口接收数据 系统卡死
2
RTT nrf24l01 设备驱动程序
3
第一次尝试移植rt-thread 到stm32F103系列问题
4
有人把stm32L07xx的bsp移到rtt上来了吗?求一个
5
rt-thread线程调度异常在stm32f103芯片上
6
RTT是否支持STM32F429
7
请问谁有 STM32F40x HAL + RT-THREAD 模板
8
rt-thread在stm32f411下的移植问题
9
针对STM32F7系列平台的MPU,Cache特性,需要注意哪些问题?
10
以后会把RT-thread移植到STM32的cube库上面么?我自己移植了一下STM32F373
推荐文章
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
【RT-Thread】记录一次对主仓的bsp进行修复并提交pr的总结
2
【请投票】嵌入式大赛Top10排名等你来选!
3
【24嵌入式设计大赛】HPM5300-EVK 网络测速仪
4
RT-Thread Nano 上线ST CubeMX
5
Nordic移植笔记: RT_Thread v5.1.0(基于Nordic nRF52840的ble_app_hids_mouse工程)
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
ART-Pi
FinSH
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
flash
packages_软件包
cubemx
PWM
freemodbus
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
rt_mq_消息队列_msg_queue
keil_MDK
C++_cpp
ulog
at_device
SFUD
本月问答贡献
出出啊
1515
个答案
342
次被采纳
小小李sunny
1438
个答案
289
次被采纳
张世争
786
个答案
168
次被采纳
crystal266
546
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
6
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部