Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
UART
stm32f407-atk-explorer uart2不能正常工作【已解决】
发布于 2019-07-31 11:08:59 浏览:2515
订阅该版
* 本帖最后由 Liam 于 2019-7-31 16:28 编辑 * 在原子407开发板上根据RTT API手册 uart_sample.c 做串口实验,发现uart2不能正常写数据(uart3正常),2天没找到原因,来请教大家。 测试代码: ```#include
#include
#include
/* defined the LED0 pin: PF9 */ #define LED0_PIN GET_PIN(F, 9) #define SAMPLE_UART_NAME "uart3" /* 用于接收消息的信号量 */ static struct rt_semaphore rx_sem; static rt_device_t serial; static struct rt_thread led_thread; static rt_uint8_t led_thread_stack[512]; void led_thread_entry(void* parameter) { rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT); while(1) { rt_pin_write(LED0_PIN, PIN_HIGH); rt_thread_mdelay(2000); rt_pin_write(LED0_PIN, PIN_LOW); rt_thread_mdelay(150); } } void thread2_entry(void* parameter) { while(1) { rt_kprintf("enter %s
", __FUNCTION__); rt_thread_mdelay(1000); } } /* 接收数据回调函数 */ static rt_err_t uart_input(rt_device_t dev, rt_size_t size) { /* 串口接收到数据后产生中断,调用此回调函数,然后发送接收信号量 */ rt_sem_release(&rx_sem); return RT_EOK; } static void serial_thread_entry(void *parameter) { char ch; while (1) { /* 从串口读取一个字节的数据,没有读取到则等待接收信号量 */ while (rt_device_read(serial, -1, &ch, 1) != 1) { /* 阻塞等待接收信号量,等到信号量后再次读取数据 */ rt_sem_take(&rx_sem, RT_WAITING_FOREVER); } rt_device_write(serial, 0, &ch, 1); } } static int uart_sample(int argc, char *argv[]) { rt_err_t ret = RT_EOK; char uart_name[RT_NAME_MAX]; char str[] = "hello RT-Thread!
"; if (argc == 2) { rt_strncpy(uart_name, argv[1], RT_NAME_MAX); } else { rt_strncpy(uart_name, SAMPLE_UART_NAME, RT_NAME_MAX); } /* 查找系统中的串口设备 */ serial = rt_device_find(uart_name); if (!serial) { rt_kprintf("find %s failed!
", uart_name); return RT_ERROR; } /* 初始化信号量 */ rt_sem_init(&rx_sem, "rx_sem", 0, RT_IPC_FLAG_FIFO); /* 以中断接收及轮询发送模式打开串口设备 */ rt_device_open(serial, RT_DEVICE_FLAG_INT_RX); /* 设置接收回调函数 */ rt_device_set_rx_indicate(serial, uart_input); /* 创建 serial 线程 */ rt_thread_t thread = rt_thread_create("serial", serial_thread_entry, RT_NULL, 1024, 25, 10); /* 创建成功则启动线程 */ if (thread != RT_NULL) { rt_thread_startup(thread); } else { rt_kprintf("create thread failed.
"); ret = RT_ERROR; } /* 发送字符串 */ rt_device_write(serial, 0, str, (sizeof(str) - 1)); return ret; } /* 导出到 msh 命令列表中 */ MSH_CMD_EXPORT(uart_sample, uart device sample); int main(void) { rt_err_t result; // thread 1 静态线程 result = rt_thread_init(&led_thread, "led_thread", led_thread_entry, RT_NULL, // 参数 &led_thread_stack[0],// 线程栈 sizeof(led_thread_stack), 20, 10); // 优先级 时间片 if(result == RT_EOK) rt_thread_startup(&led_thread); return RT_EOK; } ``` ![uart2.png](https://oss-club.rt-thread.org/uploads/201907/31/110618q8hquqzluk5u26l8.png) ![uart3.png](https://oss-club.rt-thread.org/uploads/201907/31/110618u3q30nzqm1tsoy3o.png) ![uart3_serial.png](https://oss-club.rt-thread.org/uploads/201907/31/110618jfdzffdwf7fdffd7.png) ![menuconfig.png](https://oss-club.rt-thread.org/uploads/201907/31/110619cee0eopgm4ew2opx.png)
查看更多
11
个回答
默认排序
按发布时间排序
whj467467222
认证专家
2019-07-31
开源,分享,交流,共同进步
在rt_thread/bsp/stm32/stm32f407-atk-explorer目录下的readme.md有说明 COM2 支持 和以太网、PWM 冲突,如需使用该外设,请使用 CubeMX 重新配置 UART2 管脚 [https://github.com/whj4674672/rt-thread/tree/master/bsp/stm32/stm32f407-atk-explorer#%E5%A4%96%E8%AE%BE%E6%94%AF%E6%8C%81](https://github.com/whj4674672/rt-thread/tree/master/bsp/stm32/stm32f407-atk-explorer#%E5%A4%96%E8%AE%BE%E6%94%AF%E6%8C%81) 如果还没不能解决你的问题,楼主能否告知你两天的调试,都做过哪些工作?
tyustli
2019-07-31
这家伙很懒,什么也没写!
看了一下 stm32f407-atk-explorer 这个 BSP 虽然 Kconfig 给出了 UART2 配置选项,但是对应的硬件并没有初始化,楼主使用 Cubemx 初始化一下硬件试试
Liam
2019-07-31
这家伙很懒,什么也没写!
>在rt_thread/bsp/stm32/stm32f407-atk-explorer目录下的readme.md有说明 COM2 支持 和以太网、PWM 冲突,如 ... --- 应该是这里的问题,我重新配置测试一下:handshake
Liam
2019-07-31
这家伙很懒,什么也没写!
>看了一下 stm32f407-atk-explorer 这个 BSP 虽然 Kconfig 给出了 UART2 配置选项,但是对应的硬件并没有初 ... --- 多谢,我重新配置测试一下:handshake
Liam
2019-07-31
这家伙很懒,什么也没写!
>在rt_thread/bsp/stm32/stm32f407-atk-explorer目录下的readme.md有说明 COM2 支持 和以太网、PWM 冲突,如 ... --- 你好,我用CubeMx重新配置过uart2引脚后功能正常,感谢! 首次使用这些工具,我想确定一下方法是否正确,我是打开stm32f407-atk-explorer\board\CubeMX_Config目录下的cubemx工程,编辑后重新生成代码,重新编译keil工程后下载测试
LLD1252310732
2019-10-30
这家伙很懒,什么也没写!
楼主能给一下这个代码吗
Liam
2019-10-31
这家伙很懒,什么也没写!
>楼主能给一下这个代码吗 --- 不是已经贴到上面了么..
LLD1252310732
2019-10-31
这家伙很懒,什么也没写!
>不是已经贴到上面了么.. --- hi,大哥,可以加一下我的微信吗,我的微信:15694334426,我想咨询一下STM32F407如何用cubemx添加uart2驱动.
LLD1252310732
2019-10-31
这家伙很懒,什么也没写!
>hi,大哥,可以加一下我的微信吗,我的微信:15694334426,我想咨询一下STM32F407如何用cubemx添加uart2 ... --- 别加了,解决啦
LLD1252310732
2019-11-01
这家伙很懒,什么也没写!
我在cubemx中初始化了uart2,但还是读不到数据,为什么呢?可以加个微信,您那边发一下我BSP吗
撰写答案
登录
注册新账号
关注者
0
被浏览
2.5k
关于作者
Liam
这家伙很懒,什么也没写!
提问
10
回答
38
被采纳
0
关注TA
发私信
相关问题
1
rt thread 2.0.2 usart 接收缓存问题
2
关于STM32串口通信的问题
3
STM32F1+RTT串口接收终端数据丢失问题
4
UART TX丢数据?
5
RTT打开串口的时候如何自定义波特率呢?
6
STM32F4的USART数据接收问题
7
串口1234使用问题
8
串口接收回调函数
9
LPC18xx UART问题讨论
10
x1000串口配置的失败问题
推荐文章
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
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
2
RT-Thread EtherKit开源以太网硬件正式发布
3
如何在master上的BSP中添加配置yml文件
4
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
5
RT-Thread 发布 EtherKit开源以太网硬件!
热门标签
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
MicroPython
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
19
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
6
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部