stm32 创建项目发生错误

在使用Keil进行嵌入式开发时遇到一个警告,指出函数'NVIC_SystemReset'可能应声明为'noreturn'类型。博主建议将Keil版本从6变为5以解决问题,并提醒如果出现大量错误,需检查并设置包含路径。

../Libraries/CMSIS/core_cm3.h(1720): warning: function 'NVIC_SystemReset' could be declared with attribute 'noreturn' [-Wmissing-noreturn]

遇到这种情况,直接将只需要在keil设置里把版本从keil_6变成keil_5

如果报了很多错误,记得设置包含路径

 

 

### STM32 创建工程时遇到的四个错误及其解决方案 在使用 STM32CubeMX 和 CubeIDE 开发 STM32F1 系列微控制器的过程中,可能会遇到一些常见的问题。以下是针对这些问题的具体描述以及相应的解决方案。 #### 1. **无法生成工程** 当尝试通过 STM32CubeMX 生成工程文件时,可能由于某些配置不正确而导致失败。这通常是因为项目路径中包含了特殊字符或者中文名称[^4]。 - **解决方案**: 确保项目的保存路径只包含英文字符和数字,避免任何特殊符号或中文目录名。此外,在生成工程之前,确认所选工具链/编译器设置无误。 #### 2. **代码被自动覆盖** 如果手动修改后的代码在重新生成工程时被覆盖,则可能是未正确标记需要保留的手动更改部分。 - **解决方案**: 对于希望保持不变的部分(如初始化函数),可以利用 `USER CODE BEGIN` 和 `USER CODE END` 注释之间的区域来放置自定义代码。这些区域内的内容不会因重新生成而丢失。 #### 3. **硬件 I2C 的小 Bug** 启用硬件 I2C 功能后发现通信异常,此现象往往源于 SCL 或 SDA 引脚上拉电阻缺失或阻值不当。 - **解决方案**: 检查并调整外部电路设计,确保每个 I2C 总线都有合适的上拉电阻连接到 VCC。推荐的标准值范围通常是 4.7kΩ 至 10kΩ。 #### 4. **HardFault_Handler 处理** 运行程序期间触发 HardFault 中断,表明存在严重的执行错误,比如访问非法地址、堆栈溢出等问题[^3]。 - **解决方案**: 深入分析 HardFault 的原因可以通过调试手段获取更多信息,例如查看 SCB->HFSR 寄存器状态判断具体故障源;同时优化内存分配策略防止潜在越界操作发生。 ```python def check_hard_fault(): """ A function to demonstrate how one might inspect the cause of a hard fault. This is illustrative and would need adaptation based on actual hardware specifics. """ hfsr_value = read_register('SCB_HFSR') # Hypothetical register reading mechanism if (hfsr_value & 0x40000000): # Check Forced Hard Fault bit print("Forced Hard Fault detected.") elif (hfsr_value & 0x80000000): # Check Debug Event bit print("Debug event caused this hard fault.") check_hard_fault() ``` 上述 Python 函数仅作为概念展示用途,并不代表实际嵌入式 C 实现方式。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值