STM32 串口3不能发送数据 80

我用的是STM32F103C8调了一下午的USART3就是不能发送数据,把以前写好的程序移植了发现TX口还是没有输出(用逻辑分析仪抓TX脚一直为高电平),端口配置成普通I... 我用的是STM32F103C8调了一下午的USART3就是不能发送数据,把以前写好的程序移植了发现TX口还是没有输出(用逻辑分析仪抓TX脚一直为高电平),端口配置成普通IO输出方波OK,说明PCB没有问题,配置成USART3 TX就移植高电平,本以为CPU有问题结果换了一块还是不行,现在我怀疑是不是这款CPU有BUG。

void _USART_Init()
{
GPIO_InitTypeDef myGPIO;
USART_InitTypeDef myUSART;
NVIC_InitTypeDef myNVIC;

myGPIO.GPIO_Pin =GPIO_Pin_11; //RXD
myGPIO.GPIO_Mode =GPIO_Mode_IPU;
GPIO_Init(GPIOB,&myGPIO);

myGPIO.GPIO_Pin =GPIO_Pin_10; //TXD
myGPIO.GPIO_Mode =GPIO_Mode_AF_PP;
myGPIO.GPIO_Speed =GPIO_Speed_10MHz;
GPIO_Init(GPIOB,&myGPIO);

myUSART.USART_BaudRate =9600;
myUSART.USART_WordLength =USART_WordLength_8b;
myUSART.USART_StopBits =USART_StopBits_1;
myUSART.USART_Parity =USART_Parity_No;
myUSART.USART_HardwareFlowControl =USART_HardwareFlowControl_None;
myUSART.USART_Mode =USART_Mode_Tx|USART_Mode_Rx;
USART_Init(USART3,&myUSART);

USART3 ->BRR =3750;
USART_Cmd(USART3,ENABLE);

myNVIC.NVIC_IRQChannel =USART3_IRQChannel;
myNVIC.NVIC_IRQChannelPreemptionPriority =0;
myNVIC.NVIC_IRQChannelSubPriority =0;
myNVIC.NVIC_IRQChannelCmd =ENABLE;
NVIC_Init(&myNVIC);

USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);
}

UINT8 UART_ReadByte()
{
UINT8 dat =0;
while((USART3 ->SR &0x20) ==0);
dat =USART3 ->DR;
return dat;
}

void UART_SendByte(UINT8 dat)
{
while((USART3 ->SR &0x40) ==0);
USART3 ->DR =dat;
}
展开
 我来答
山水之间好好DX839
2016-02-27
知道答主
回答量:1
采纳率:0%
帮助的人:1160
展开全部

确实有bug,官方有给stm32的使用限制说明,I2C2和usart3的时钟如果同时打开相互影响,你初始化时打开了所有时钟,这样应该就不行了。官方的使用限制说明,百度一下就有

匿名用户
2015-11-28
展开全部
C8T6 如果flash 是32K的 芯片只有两个USART 64K的flash才有3个
可以看看你的芯片容量
更多追问追答
追问
STM32F103C8T6有两个版本??
追答
说的是C系列

接收端设置成浮空输入 试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式