本帖最后由 appllo 于 2015-9-17 16:31 编辑 7 L4 c" }8 b+ t2 u; ` : Q. P5 Z- b0 b% w" S 1、打开软件,新建工程,选择芯片信号,这里选择file:///C:/Temp/Wiz/4dbfb2a5-f153-4155-944a-4d40a5495286_4_files/6020dc03-9bd2-451a-bddf-4682424732d1.png4 F, D0 u# M; }5 c 2、USART1使能选择“Asynchronous”模式:9 D! v/ y. t# v* h 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.png1 l V; ^9 v$ D 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! W' Q% e/ }2 W, U* L9 U4 ]5 c5 d 中断一定要都选,否则,程序运行起来,只能运行一次。 7、选项“Project”,选择“Project Setting”,选择习惯使用的编译软件; 8、选项“Project”,选择“Generate Code”,生成工程,用MDK打开; n, {; J+ q2 c) [6 K7 W7 e, z 9、在主函数上使用语句:HAL_UART_Transmit_DMA(&huart1,sendbuf,sizeof(sendbuf));就能通过DMA发送串口数据了。0 c. q7 F+ I6 w$ C* G0 g |
不会的,有个中断标志位得清楚,最简单的方法就是使能UART中断。。你可以试试,也可以手动清除。
不打开串口中断只能发送一次,好像是,DMA串口发送和接收,其实还是会进入串口本身的中断,必须清楚中断标志位,不然串口就一直在busy状态
但是我就是没有设置串口中断,他还是能正常发送啊?!
你是用dma发送的吗?
对啊,调用的HAL_UART_Transmit_DMA,并且我在在线调试时主程序停了,它在继续发送(应该是不停在传送吧?!)。。。