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;
} 展开
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;
} 展开
2个回答
2015-11-28
展开全部
C8T6 如果flash 是32K的 芯片只有两个USART 64K的flash才有3个
可以看看你的芯片容量
可以看看你的芯片容量
更多追问追答
追问
STM32F103C8T6有两个版本??
追答
说的是C系列
接收端设置成浮空输入 试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询