完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用的是UART7的RX端接收25字节长度的数据 代码如下UART_HandleTypeDef UART1_InitStructure;
UART_HandleTypeDef UART7_InitStructure; DMA_HandleTypeDef DMA_UART7_RX; u8 aRxBuffer[25]; void My_Usart_Init(void) { UART7_InitStructure.Instance=UART7; UART7_InitStructure.Init.BaudRate=100000; UART7_InitStructure.Init.WordLength=UART_WORDLENGTH_8B; UART7_InitStructure.Init.StopBits=UART_STOPBITS_2; UART7_InitStructure.Init.Parity=UART_PARITY_EVEN; UART7_InitStructure.Init.HwFlowCtl=UART_HWCONTROL_NONE; UART7_InitStructure.Init.Mode=UART_MODE_RX; HAL_UART_Init( UART7_InitStructure); __HAL_UART_ENABLE_IT( UART7_InitStructure,UART_IT_IDLE); HAL_UART_Receive_DMA( UART7_InitStructure, (u8 *)aRxBuffer, 25); } void DMA_Init(void) { __HAL_RCC_DMA2_CLK_ENABLE(); HAL_NVIC_SetPriority(DMA2_Stream2_IRQn,0,0); HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn); } void HAL_UART_MspInit(UART_HandleTypeDef *huart) { GPIO_InitTypeDef GPIO_InitStructure; if(huart->Instance==UART7) { __HAL_RCC_GPIOE_CLK_ENABLE(); __HAL_RCC_UART7_CLK_ENABLE(); GPIO_InitStructure.Pin=GPIO_PIN_7; GPIO_InitStructure.Mode=GPIO_MODE_AF_PP; GPIO_InitStructure.Pull=GPIO_NOPULL; GPIO_InitStructure.Speed=GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStructure.Alternate=GPIO_AF7_UART7; HAL_GPIO_Init(GPIOE, GPIO_InitStructure); DMA_UART7_RX.Instance=DMA2_Stream2; DMA_UART7_RX.Init.Request=DMA_REQUEST_UART7_RX; DMA_UART7_RX.Init.Direction=DMA_PERIPH_TO_MEMORY; DMA_UART7_RX.Init.PeriphInc=DMA_PINC_DISABLE; DMA_UART7_RX.Init.MemInc=DMA_MINC_ENABLE; DMA_UART7_RX.Init.PeriphDataAlignment=DMA_PDATAALIGN_BYTE; DMA_UART7_RX.Init.MemDataAlignment=DMA_MDATAALIGN_BYTE; DMA_UART7_RX.Init.Mode=DMA_CIRCULAR; DMA_UART7_RX.Init.Priority=DMA_PRIORITY_VERY_HIGH; DMA_UART7_RX.Init.FIFOMode=DMA_FIFOMODE_DISABLE; DMA_UART7_RX.Init.FIFOThreshold=DMA_FIFO_THRESHOLD_FULL; DMA_UART7_RX.Init.MemBurst=DMA_MBURST_SINGLE; DMA_UART7_RX.Init.PeriphBurst=DMA_PBURST_SINGLE; HAL_DMA_Init( DMA_UART7_RX); __HAL_LINKDMA( UART7_InitStructure,hdmarx,DMA_UART7_RX); HAL_NVIC_EnableIRQ(UART7_IRQn); HAL_NVIC_SetPriority(UART7_IRQn,0,0); } } void Send_Data(u8 *data,u8 len) { HAL_UART_Transmit( UART1_InitStructure,(u8 *)data,len,1000); } void UART7_IRQHandler(void) { u32 temp; HAL_UART_IRQHandler( UART7_InitStructure); if(__HAL_UART_GET_FLAG( UART7_InitStructure,UART_FLAG_IDLE)!=RESET) { __HAL_UART_CLEAR_IDLEFLAG( UART7_InitStructure); temp=UART7_InitStructure.Instance->ISR; temp=UART7_InitStructure.Instance->RDR; HAL_UART_DMAStop( UART7_InitStructure); temp=__HAL_DMA_GET_COUNTER( DMA_UART7_RX); Send_Data(aRxBuffer,25); } // HAL_UART_Receive_DMA( UART7_InitStructure, (u8 *)aRxBuffer, 25); } UART7接受到的数据再用USART1传给电脑 现在是传回来的数据全是空的 不知如何是好 |
|
相关推荐
1个回答
|
|
1。启用UART7和DMA模块的时钟:确保在RCC寄存器中启用了UART7的时钟和DMA控制器的时钟。
2.初始化UART7:确保UART7以所需的波特率、字长、奇偶校验和停止位正确初始化。3.配置GPIO引脚:在交替功能模式下配置用于UART通信的GPIO引脚。4.为UART7接收配置DMA:通过配置DMA流和信道、源和目的地地址、传输长度和其他参数,为UART77接收设置DMA。确保UART7接收的DMA请求已启用 5.启用UART7和DMA接收:启用UART接收器和DMA接收。确保UART RX DMA请求已启用。 6.启用DMA中断(可选):如果您想处理DMA接收的中断,请启用DMA中断并实现适当的DMA ISR(中断服务例程)。 7.启用全局中断(可选):如果您已启用DMA中断,并且应用程序需要其他中断,请使用适当的功能启用全局中断。记住还要处理DMA接收过程中可能发生的任何潜在错误或错误中断。这些是通用指南,您可能需要参考特定的STM32H750参考手册和数据表,以获取准确的寄存器名称和配置。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1621 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1546 浏览 1 评论
980 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
686 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1599 浏览 2 评论
1865浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
648浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
517浏览 3评论
534浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 11:03 , Processed in 0.738654 second(s), Total 77, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号