|
本帖最后由 zjr0411 于 2017-3-20 16:36 编辑
之前用的f103,串口正常使用,一直非常稳定,从来没发现有问题
由于用的外设很少,就用了f100c8这个芯片,但是串口却不能正常使用,
表现为接收正常,发送出来电脑接收的不正常,比如
发送十进制的:0123456789 //Uart1PutString("0123456789\r\n");
接收到的数字用十六进制显示为:30 B1 B2 33 B4 35 36 B7 B8 39 8D 0A
错误一直都是固定这几个错误,如果f100一直发0x01(此处描述错误,应该是发送字符1,也就是0x31,谢谢楼下指正),那电脑接收到的一直都是0xb1
串口初始化程序如下:
void USART1_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
/* config USART1 clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
/* USART1 GPIO config */
/* Configure USART1 Tx (PA.09) as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Configure USART1 Rx (PA.10) as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* USART1 mode config */
USART_InitStructure.USART_BaudRate = UART_BPS;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_Even ;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1, &USART_InitStructure);
// RCC->APB2RSTR|=1<<14; //¸´Î»´®¿Ú1
// RCC->APB2RSTR&=~(1<<14);//Í£Ö¹¸´Î»
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//BSP_INT_ID_USART1;USART1_IRQHandler
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_ITConfig(USART1, USART_IT_TC, ENABLE);
USART_Cmd(USART1, ENABLE);
/* CPUµÄСȱÏÝ£º´®¿ÚÅäÖúã¬Èç¹ûÖ±½ÓSend£¬ÔòµÚ1¸ö×Ö½Ú·¢ËͲ»³öÈ¥
ÈçÏÂÓï¾ä½â¾öµÚ1¸ö×Ö½ÚÎÞ·¨ÕýÈ··¢ËͳöÈ¥µÄÎÊÌâ */
USART_ClearFlag(USART1, USART_FLAG_TC); /* Çå·¢ËÍÍê³É±êÖ¾£¬Transmission Complete flag */
}
现在该往哪里想办法解决这个问题?谁知道解决办法的请告知,谢谢!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|