|
通过 CubeMX 生成的 stm32h743iit6 的 cmake 工程(根据 starm-clang 编译器的版本修改至使用 ATfE 编译器,仅使用 picolibc),启用 ICache 和 DCache,启用 USART1 以及 tx DMA,在程序中,使用 |
stm32cubeMx生成stm32H743IIT6 cmake工程时全局变量自动定义到DTCM段
STM32G431 用MCSDK5.4.8 进行PMSM永磁同步电机FOC控制,转速上升到某一值(3500rpm)无法继续上升,上不去
TOF传感器无法正确识别物体
SDIO读取TF卡,1bit模式正常,4bit模式无法读取
Cubemx的外部低速时钟已激活但时钟树中HSI无法选择
STM32H750VBT6无法使用flymcu.exe或flashloader,通过串口1烧写程序
STM32H723VGT6 通过USART1/3连接CubeProgrammer失败
在stm32cubeAI上,打开Lanuch NeuralNet Studio提示打不开
STM32CUBEMX生成代码格式问题
MX创建的SMT32工程在IDE中build会报错
微信公众号
手机版
HAL库里有例程,可以参考一下。
STM32Cube_FW_H7_V1.11.1\Projects\STM32H743I-EVAL\Examples\UART\UART_HyperTerminal_DMA
应该不是 DMA 设置的问题,我尝试在 .ld 文件里将所有段都改到了 RAM 中(对应内存 0x24000000 后),串口 DMA 可以正常传输一次,但是第二次时,HAL_UART_Transmit_DMA 函数会返回 HAL_BUSY,并且无法发送数据
[md]你注意下 有些状态标志的管理。比方调用UART发送前手动加句:
huart1.gState = HAL_UART_STATE_READY
当然,如果按照库代码逻辑,开启UART相关中断并采用库函数中断服务例程,库代码通常会
自行处理好。有时我们可能并不完全按照库代码的逻辑在走,有时就需手动做些调整。
找到解决方法了吗?我知道原因是cmake工程默认全局变量定义到DTCM区域了,该区域无法使用DMA访问,但是没有找到解决方法