【STM32F303开发】开发学习笔记、教程集合贴
【合集】STM32F303开发教程
【STM32F303开发】+ 使用片内的CCMRAM缩短代码执行时间
【STM32F303开发】(五)TIM定时器PWM的输出与捕获
【STM32F303开发】+ 内部Flash模拟EEPROM
【STM32F303开发】+如何解析GPS数据
【STM32F303开发】+使用fromelf反汇编keil生成的AXF文件
使用STM32F303VBT6的SPI驱动TM1629A
【STM32F303开发】+ 使用SWO输出调试信息到Debug Viewer窗口
【STM32F303开发】基础:工程模板+LED+USART+常用文档+按键中断
不是不帮你改,我这没有303的板子。。。。自己改一下,大家一块帮你分析。
1、是没有理解中断调用的机制,USART2_IRQHandler(void)是一个句柄,个人认为不应该把串口发送放在句柄里执行,应该找到回调函数放到回调函数里进行收发(发送完成或接收完成回调函数)。
2、为什么HAL库里有串口发送函数,封装好的,你不用,你还要自己写串口发送呢?
{
USART_SendData(usartnum, data);
/* wait until transmission is complete */
while (!(USART_GetFlagStatus(usartnum, USART_FLAG_TC))) {
;
}
}
void HW_USART_SendChars(USART_TypeDef* usartnum, uint16_t len, void *buff)
{
uint16_t i;
uint8_t *ptr = (uint8_t *)buff;
for (i = 0; i < len; i++) {
HW_USART_SendOneChar(usartnum, ptr[i]);
}
}
void HW_USART_SendString(USART_TypeDef* usartnum, void *buff)
{
uint8_t *ptr = (uint8_t *)buff;
while (*ptr != '\0') {
HW_USART_SendOneChar(usartnum, *ptr++);
}
}
uint16_t HW_USART_ReceOneChar(USART_TypeDef* usartnum)
{
/* Wait until data to be received */
while (!(USART_GetFlagStatus(usartnum, USART_FLAG_RXNE))) {
;
}
return USART_ReceiveData(usartnum);
}
以上这几种发送在HAL库里都有对应的函数,可以试下,使用中断方式,应该没问题的
刚学习这芯片 能力不足啊
建议去掉自己写的收发函数,使用库里的试下,最好使用中断方式收发的那组
f3标准库