博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STM32部分BUG及解决方法记录(不定期更新)
阅读量:3930 次
发布时间:2019-05-23

本文共 840 字,大约阅读时间需要 2 分钟。

1.编译使用CubeMX生成的代码时报错

Error: L6218E: Undefined symbol HAL_PWREx_DisableUCPDDeadBattery (referred from stm32g4xx_hal_msp.o).

解决方法:将HAL_PWREx_DisableUCPDDeadBattery改为HAL_PWREx_DisableUSBDeadBatteryPD

2.使用LL库生成的SPI代码时,程序卡死

使用LL库生成的SPI代码时,程序卡死在while(LL_SPI_IsActiveFlag_RXNE(ICM20602_SPI_CHANNEL)==RESET);

解决方法:在初始化时添加下面的代码

LL_SPI_SetRxFIFOThreshold(SPI2, LL_SPI_RX_FIFO_TH_QUARTER);

参考:

3.HAL库串口中断失效

单片机同时接收和发送数据时,接收中断可能会失效,导致无法继续接收数据。

原因:观察HAL_UART_Transmit函数,如下,可以看到其中有一句__HAL_LOCK(huart);,用于在串口发送时给串口加锁,这时候如果单片机接收到了新的数据,也不会调用回调函数,导致串口接收中断无法再次被打开。

解决方法:在发送数据前将串口接收中断关掉,发送完成后再开启,但是这样还是会丢失数据

/* 关闭串口接收中断 */HAL_NVIC_DisableIRQ(LPUART1_IRQn);/* 发送数据 */HAL_UART_Transmit(&hlpuart1, data_to_send, cnt, 0xFFFF); /* 开启串口接收中断 */HAL_NVIC_EnableIRQ(LPUART1_IRQn);

参考:

4.使用STM32CubeMX生成代码报错 Error: Device not found

原因:安装了比Java8更高的版本Java

解决方法:卸载高版本的Java即可

转载地址:http://imvgn.baihongyu.com/

你可能感兴趣的文章
欢迎使用CSDN-markdown编辑器
查看>>
spark && Tachyon
查看>>
计算机科学不等于数学
查看>>
文件系统与NoSQL分布式存储技术对比
查看>>
rootkit技术
查看>>
调试寄存器(debug registers, DRx)理论及实践
查看>>
Linux下逻辑地址-线性地址-物理地址图解
查看>>
vim安装SrcExpl 插件,实现自动显示跳转函数及变量定义功能
查看>>
linux 版本中 i386/i686/x86-64/pcc 等... 的区别
查看>>
机器学习 | 台大林轩田机器学习基石课程笔记11 --- Linear Models for Classification
查看>>
机器学习 | 台大林轩田机器学习基石课程笔记12 --- Nonlinear Transformation
查看>>
线性代数 | (2) 矩阵Part Two
查看>>
机器学习 | 台大林轩田机器学习基石课程笔记13 --- Hazard of Overfitting
查看>>
机器学习 | 台大林轩田机器学习基石课程笔记14 --- Regularization
查看>>
机器学习 | 台大林轩田机器学习基石课程笔记15 --- Validation
查看>>
机器学习 | 台大林轩田机器学习基石课程笔记16 --- Three Learning Principles
查看>>
机器学习 | 台大林轩田机器学习技法课程笔记1 --- Linear Support Vector Machine
查看>>
机器学习 | 台大林轩田机器学习技法课程笔记2 --- Dual Support Vector Machine
查看>>
线性代数 | (3) 行列式
查看>>
学术英语 | (1) wordList1
查看>>