Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
BSP
stm32f10x串口只能发送数据,无法接收
发布于 2015-12-12 19:10:46 浏览:3204
订阅该版
用串口助手发送后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 打开串口最终调用这个 // 打开设备 [code]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);[/code] ...... 其实在这里初始化中断就已经打开了,它在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
这家伙很懒,什么也没写!
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=23575&ptid=4368][color=#999999]labi41 发表于 2016-3-17 21:49[/color][/url][/size] 请问是怎么解决的,我的情况跟你的一模一样。呵呵 原来的1.2版本使用好用的,怎么2.0这么多问题 ...[/quote] 我也是遇到这个问题,能发送不能接收。
huang2017
2019-01-02
这家伙很懒,什么也没写!
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=41958&ptid=4368][color=#999999]huang2017 发表于 2019-1-2 13:51[/color][/url][/size] 我也是遇到这个问题,能发送不能接收。[/quote] 最后是怎么解决的,可以分享一下吗
撰写答案
登录
注册新账号
关注者
0
被浏览
3.2k
关于作者
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
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
五分钟玩转RT-Thread新社区
5
国产MCU移植系列教程汇总,欢迎查看!
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
如何用Ubuntu qemu跑zephyr_polling的蓝牙
2
分享一种很简单的不阻塞TCP发送方法
3
stm32c86使用串口3时无法正常读到中断的数据
4
如何用ART-PI跑zephyr_polling的蓝牙
5
掌上单片机实验室 – 基于 RTT 框架的第一个应用
热门标签
RT-Thread Studio
串口
LWIP
Env
SPI
AT
FinSH
Bootloader
CAN总线
ART-Pi
Hardfault
文件系统
USB
DMA
RT-Thread
线程
SCons
RT-Thread Nano
stm32
MQTT
ESP8266
ota
UART
RTC
freemodbus
rtthread
rt-smart
packages_软件包
I2C
WIZnet_W5500
flash
cubemx
FAL
定时器
BSP
AB32VG1
PWM
ADC
SDIO
msh
socket
LVGL
keil
Debug
C++_cpp
中断
编译报错
SFUD
SMP
MicroPython
本月问答贡献
出出啊
1431
个答案
317
次被采纳
小小李sunny
1342
个答案
267
次被采纳
crystal266
505
个答案
149
次被采纳
whj467467222
1212
个答案
142
次被采纳
张世争
590
个答案
135
次被采纳
本月文章贡献
出出啊
3
篇文章
5
次点赞
小小李sunny
1
篇文章
1
次点赞
crystal266
1
篇文章
3
次点赞
whj467467222
2
篇文章
4
次点赞
张世争
6
篇文章
14
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部