|
本帖最后由 appllo 于 2015-9-17 16:31 编辑 1、打开软件,新建工程,选择芯片信号,这里选择file:///C:/Temp/Wiz/4dbfb2a5-f153-4155-944a-4d40a5495286_4_files/6020dc03-9bd2-451a-bddf-4682424732d1.png 2、USART1使能选择“Asynchronous”模式: 3、配置“RCC”,High Speed Clock (HSE) 选择外部晶振 4、配置“SYS", 5、“Clock Configuration”选项,晶振填8M,选择“HSE”,HCLK填写180MHz,如下图所示 file:///C:/Temp/Wiz/4dbfb2a5-f153-4155-944a-4d40a5495286_4_files/f3536241-50ca-4292-969e-6581d61397f3.png 6、“Configuration”,点击“file:///C:/Temp/Wiz/4dbfb2a5-f153-4155-944a-4d40a5495286_4_files/bd3e9bbe-9454-4568-a373-f9028750fcdb.png”,对usart1进行配置 file:///C:/Temp/Wiz/4dbfb2a5-f153-4155-944a-4d40a5495286_4_files/92183fd7-2963-4e26-9cf7-7ad72964c381.png 中断一定要都选,否则,程序运行起来,只能运行一次。 7、选项“Project”,选择“Project Setting”,选择习惯使用的编译软件; 8、选项“Project”,选择“Generate Code”,生成工程,用MDK打开; 9、在主函数上使用语句:HAL_UART_Transmit_DMA(&huart1,sendbuf,sizeof(sendbuf));就能通过DMA发送串口数据了。 |
微信公众号
手机版
不会的,有个中断标志位得清楚,最简单的方法就是使能UART中断。。你可以试试,也可以手动清除。
不打开串口中断只能发送一次,好像是,DMA串口发送和接收,其实还是会进入串口本身的中断,必须清楚中断标志位,不然串口就一直在busy状态
但是我就是没有设置串口中断,他还是能正常发送啊?!
你是用dma发送的吗?
对啊,调用的HAL_UART_Transmit_DMA,并且我在在线调试时主程序停了,它在继续发送(应该是不停在传送吧?!)。。。