CubeMX踩坑记录

CubeMX踩坑记录一 系统配置 1 SYS gt Debug 配置 下载器使用哪种模式选择对应的配置 如果不配置的话默认模式会占用引脚 可能与配置引脚冲突 最终导致需求功能不正常 E keil 中选用哪种方式下载对应到 Cubemx 上 2 选择使用 Free

大家好,欢迎来到IT知识分享网。

一、系统配置

1、SYS->Debug配置?

下载器使用哪种模式选择对应的配置,如果不配置的话默认模式会占用引脚,可能与配置引脚冲突,最终导致需求功能不正常。

E:

keil中选用哪种方式下载对应到Cubemx上。

2、选择使用FreeRTOS生成代码后freertos.c文件中无内容

解决办法:

Project Manager->Code Generator->Generated files->勾选Generate peripheral initialization as a pair of “.c/h” files per peripheral

二、IIC

1、硬件IIC+DMA配置

现象:

在不使用DMA的情况下,硬件IIC配置后可正常进行工作,使能DMA后一直返回`HAL_BUSY`。

解释:

CUbeMX配置的时候没有勾选I2C的event interrypt以至于BTF标志位一直没有被清零,调用函数进不去,所以一直返回HAL_BUSY。

解决方法:

CubeMX配置时勾选event interrypt选项`,或者`手动清零(手动清零方法还未掌握)。

函数解释

HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size) //适用于没有寄存器地址的器件 hi2c:句柄 DevAddress:从机地址 pData:要发送的数组(指针) Size:要发送多少个(除DevAddress外还有多少个) HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size)//适用于有寄存器地址的器件如EEPROM等 hi2c:句柄 DevAddress:从机地址 MemAddress:从机中要访问的寄存器地址 MemAddSize:MemAddress的长度 pData:DMA搬运至内存存放的位置 Size:要接收的长度(DMA会重复覆盖数组中这么长,不会往后排) 上面两个用哪个都可以,能实现功能就行。

三、串口

1、DMA接收数组没有循环接收

现象:

DMA接收时数组中只能接收到数组满或者数组剩余长度小于要写入的数据长度。

原因:

Nomal:只接收到指定长度且只接收一次

Circular:接收到指定长度后循环覆盖接收

解决办法:

DMA setting->DMA Request Setting->把mode改为“`Circular `”。

2、串口DMA发送只能发送一次

现象:

发送一次后再次进入DMA发送时huart->State=HAL_UART_STATE_BUSY_TX

原因:

没有使能DMA发送中断,导致无法重置 huart->State = HAL_UART_STATE_READY(在DMA中断中清掉的,不用管)

(+++) Configure the USARTx interrupt priority. (+++) Enable the NVIC USART IRQ handle. 开启usart中断,dma发送完毕后会 /* Enable the UART Transmit Complete Interrupt */ 在uasrt中断里面会重置 huart->State = HAL_UART_STATE_READY

解决办法:

使能DMA中断即可

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/165481.html

(0)
上一篇 2024-12-31 15:45
下一篇 2024-12-31 16:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信