你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
没有找到相关结果
lpxv - 90后电子神技研究生
赞同来自: admin 、黎昕 、netube
southeast8000
赞同来自:
赞同来自: lpxv
要回复问题请先登录或注册
3 个回复
lpxv - 90后电子神技研究生
赞同来自: admin 、黎昕 、netube
在中断里面发送一个数据,发送完又进中断,继续发送,直到发送完所有数据就不再进中断
你没有开启中断,配置中断,当然不可以使用了,
我给你看我写的几个代码,
配置
huart1.Instance = USART1;
huart1.Init.BaudRate = 115200;
huart1.Init.WordLength = UART_WORDLENGTH_8B;//8
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.Mode = UART_MODE_TX_RX;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart1.Init.OverSampling = UART_OVERSAMPLING_16;
HAL_UART_Init(&huart1);
//这两行是自己加的,
HAL_NVIC_SetPriority(USART1_IRQn, 3 ,0);
HAL_NVIC_EnableIRQ(USART1_IRQn);
//stm32f4xx_it.c里面这样写
void USART1_IRQHandler(void)
{
HAL_UART_IRQHandler(&huart1);
}
有问题可以再问我哦,我也是刚刚搞明白
southeast8000
赞同来自:
中断时开启的,中断接收是OK的,就是中断发送不知道那个地方设置有问题,要多次执行中断发送函数(HAL_UART_Transmit_IT),才能有一次发送成功(电脑端的串口中断软件显示接收的数据),发送成功的数据其字符串也是正常的。
1、
HAL_NVIC_SetPriority(USART1_IRQn, 0, 1);
HAL_NVIC_EnableIRQ(USART1_IRQn);
2、
if(HAL_UART_Transmit_IT(&huart1, (uint8_t*)TxBuffer1, TX_BUFFER_SIZE1)!= HAL_OK)
{
Error_Handler();
}
while (UartReady != SET)
{
}
UartReady = RESET;
southeast8000
赞同来自: lpxv
直接用台式机串口就OK了。