Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
UART
我写了个串口3接收,串口2发送的api,为什么没有数据
发布于 2018-06-19 18:04:19 浏览:3162
订阅该版
```#include "usart13.h" #include "usart.h" #include "stm32f4xx.h" #include "board.h" #include
void my_usart_init() { //GPIO端口设置 GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能GPIOA时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE); //使能GPIOB时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);//使能USART3时钟接收数据 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);//使能USART2时钟接收数据 //串口3对应引脚复用映射 GPIO_PinAFConfig(GPIOB,GPIO_PinSource10,GPIO_AF_USART3); //GPIOB10复用为USART3_TXD GPIO_PinAFConfig(GPIOB,GPIO_PinSource11,GPIO_AF_USART3); //GPIOB11复用为USART3_RXD //串口2对应引脚服用映射 GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_USART2); //GPIOA2复用为USART1_TXD GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_USART2); //GPIOA3复用为USART1_RXD //USART3端口配置 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10| GPIO_Pin_11; //GPIOB10与GPIOB11 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度50MHz GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉 GPIO_Init(GPIOB,&GPIO_InitStructure); //初始化PB10,PB11 //USART2端口配置 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3; //GPIOA2与GPIOA3 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度50MHz GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉 GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA2,PA3 //USART3(接收) 初始化设置 USART_InitStructure.USART_BaudRate = 9600;//波特率设置 USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式 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_Init(USART3, &USART_InitStructure); //初始化串口3 USART_Cmd(USART3, ENABLE); //使能串口3 //USART2 初始化设置 USART_InitStructure.USART_BaudRate = 115200;//波特率设置 USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式 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_Tx; //发送模式 USART_Init(USART2, &USART_InitStructure); //初始化串口2 USART_Cmd(USART2, ENABLE); //使能串口2 USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//开启相关中断 //USART3 NVIC 配置 NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;//串口3中断通道 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//抢占优先级3 NVIC_InitStructure.NVIC_IRQChannelSubPriority =3; //子优先级3 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能 NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器、 } //串口3中断服务程序 void USART3_IRQHandler(void) { u8 Res; if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾) { Res =USART_ReceiveData(USART3);//(USART3->DR); //读取接收到的数据 USART_SendData(USART2,Res); } } void usart2_send(void) { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2 my_usart_init(); //串口初始化波特率为9600 while(1); } #ifdef RT_USING_FINSH #include
/* 串口收发api */ FINSH_FUNCTION_EXPORT(usart2_send, startup usart1 send); #endif ```
查看更多
6
个回答
默认排序
按发布时间排序
我算没治了
2018-06-19
这家伙很懒,什么也没写!
麻烦大神看下程序有没有问题,板子是F407
勇士FF
2018-06-21
这家伙很懒,什么也没写!
>麻烦大神看下程序有没有问题,板子是F407 --- 估计是驱动的问题
勇士FF
2018-06-21
这家伙很懒,什么也没写!
>麻烦大神看下程序有没有问题,板子是F407 --- 估计是驱动的问题
wlof
2018-06-23
这个家伙不懒,什么也没写
看样子,你好像想做一个转发器,你可以把那个函数USART_SendData拿出来单独测试一下,看一下能不能发出数来? void usart2_send(void)中为什么加了while(1)?加了这个返回不了,卡死,把它去掉先。
whj467467222
认证专家
2018-06-26
开源,分享,交流,共同进步
感觉楼上说的很对,在带操作系统里面每个线程都要进行一个延时,这样才能进行任务调度。如果没有延时就会出现高优先级的任务一直运行,而低优先级的一直都不会运行,你这个地方可以作成串口2收到数据之后发送
Tianqf
2018-06-26
这家伙很懒,什么也没写!
是不是因为你的接收中断没有清标志位,一直处在接收中断里不出来了?
撰写答案
登录
注册新账号
关注者
0
被浏览
3.2k
关于作者
我算没治了
这家伙很懒,什么也没写!
提问
19
回答
43
被采纳
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
ART-Pi2移植CMSIS-DAP(基于CherryUSB协议栈)
2
RT-thred的stm32h723对应bsp包CubeMX添加其他外设报错
3
RT-Thread中的time溢出问题,时间戳溢出,解决方法
4
ART-PI使用env驱动ETH网卡,pc和板子可以ping通
5
SystemView线程名字不显示
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
9
个答案
2
次被采纳
xiaorui
3
个答案
2
次被采纳
winfeng
2
个答案
2
次被采纳
三世执戟
8
个答案
1
次被采纳
KunYi
8
个答案
1
次被采纳
本月文章贡献
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
4
次点赞
Days
1
篇文章
4
次点赞
YZRD
1
篇文章
2
次点赞
lizimu
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部