完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32CubeMX配置
首先打开STM32CubeMX选择你开发的芯片型号,这里我选择的是F103R6Tx的芯片。然后第一步选择SYS里面的debug模式,如果用HAL库不进行SWD或JTAG配置,单片机只能进行下载一次程序,要进行第二次或更多次程序下载,需要按复位键(如果你的单片机有复位按键的话),或者用镊子夹住复位线路上的电容使其短路,点击Keil下载,再松开镊子。 然后RCC时钟源选择外部高速时钟,自接外部晶振 然后配置时钟树 然后打开USART1选择异步通讯模式 打开DMA添加,注意RX的DMA传输模式选择为循环模式circular,不然只会接受一次。 如果用DMA方式发送,则需要使能USART1的中断,注意:如果不开启串口中断,则程序只能发送一次数据,程序不能判断DMA传输是否完成,USART一直处于busy状态 这里注意选择环境,且路径不要出现中文名 相关函数 HAL_UART_Transmit();串口轮询发送数据,使用超时管理机制 HAL_UART_Receive();串口轮询接收数据,使用超时管理机制 HAL_UART_Transmit_IT();串口中断模式发送 HAL_UART_Receive_IT();串口中断模式接收 HAL_UART_Transmit_DMA();串口DMA模式发送 HAL_UART_Receive_DMA();串口DMA模式接收 HAL_UART_DMAPause() 暂停串口DMA HAL_UART_DMAResume(); 恢复串口DMA HAL_UART_DMAStop(); 结束串口DMA 重新配置printf与scanf 在 stm32f1xx_hal.c中包含#include #include "stm32f1xx_hal.h" #include extern UART_HandleTypeDef huart1; //声明串口 在 stm32f1xx_hal.c 中重写fget和fput函数 /** * 函数功能: 重定向c库函数printf到DEBUG_USARTx * 输入参数: 无 * 返 回 值: 无 * 说 明:无 */ int fputc(int ch, FILE *f) { HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff); return ch; } /** * 函数功能: 重定向c库函数getchar,scanf到DEBUG_USARTx * 输入参数: 无 * 返 回 值: 无 * 说 明:无 */ int fgetc(FILE *f) { uint8_t ch = 0; HAL_UART_Receive(&huart1, &ch, 1, 0xffff); return ch; } 配置代码 在主函数内添加代码 uint8_t buffer[20]; HAL_UART_Transmit_DMA(&huart1,buffer,20); 开启DMA接受,然后在回调函数里面写接受完后需要的操作,例如用DMA发送接收到的数据 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if(huart->Instance == USART1) //判断是否是串口1接受中断 { HAL_UART_Transmit_DMA(&huart1,buffer,20); } } |
|
|
|
只有小组成员才能发言,加入小组>>
3314 浏览 9 评论
2995 浏览 16 评论
3494 浏览 1 评论
9059 浏览 16 评论
4088 浏览 18 评论
1178浏览 3评论
605浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
599浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2335浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1896浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 03:29 , Processed in 1.365649 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号