767的 就是那个串口接收小试验 uart都正常 换成usart就不一样了 串口调试助手显示这个
串口接收654 再通过串口输出出来 但是用usart的话以16进制显示:3F 36 3F 3F 35 3F 3F 0D 3F 为什么中间会掺杂这些个3F,为什么4成0D了?
可是用uart做这个实验就很完美 是串口配置的问题吗?
我就是把给的实验代码中的uart改成了usart 问题出在哪 先谢谢解答的大佬
#include "sys.h"
#include "delay.h"
#include "usart.h"
u8 rdata[1];
USART_HandleTypeDef usart1_handler;
void uart1_init()
{
usart1_handler.Instance=USART1;
usart1_handler.Init.BaudRate=115200;
usart1_handler.Init.WordLength=USART_WORDLENGTH_8B;
usart1_handler.Init.StopBits=USART_STOPBITS_1;
usart1_handler.Init.Parity=USART_PARITY_NONE;
// usart1_handler.Init.HwFlowCtl=UART_HWCONTROL_NONE;
usart1_handler.Init.Mode=USART_MODE_TX_RX;
HAL_USART_Init(&usart1_handler);
}
void HAL_USART_MspInit(USART_HandleTypeDef *huart)
{
GPIO_InitTypeDef GPIO_Initure;
if(huart->Instance==USART1)
{
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_USART1_CLK_ENABLE();
GPIO_Initure.Pin=GPIO_PIN_9;
GPIO_Initure.Mode=GPIO_MODE_AF_PP;
GPIO_Initure.Pull=GPIO_PULLUP;
GPIO_Initure.Speed=GPIO_SPEED_FAST;
GPIO_Initure.Alternate=GPIO_AF7_USART1;
HAL_GPIO_Init(GPIOA,&GPIO_Initure);
GPIO_Initure.Pin=GPIO_PIN_10;
HAL_GPIO_Init(GPIOA,&GPIO_Initure);
HAL_NVIC_EnableIRQ(USART1_IRQn);
HAL_NVIC_SetPriority(USART1_IRQn,3,3);
}
}
void USART1_IRQHandler(void)
{
HAL_USART_IRQHandler(&usart1_handler);
// while (HAL_UART_GetState(&usart1_handler) != HAL_UART_STATE_READY);
while(HAL_USART_Receive_IT(&usart1_handler, (u8 *)rdata, 1) != HAL_OK);
}
void HAL_USART_RxCpltCallback(USART_HandleTypeDef *huart)
{
u8 rec;
if(huart->Instance==USART1)
{
// rec=*(--(huart->pRxBuffPtr));
rec=rdata[0];
HAL_USART_Transmit(&usart1_handler,&rec,1,1000);
}
}
int main(void)
{
Cache_Enable();
HAL_Init();
Stm32_Clock_Init(432,25,2,9);
delay_init(216);
uart1_init();
HAL_USART_Receive_IT(&usart1_handler, (u8 *)rdata, 1);
while(1)
{
}
}
一周热门 更多>