计算机520错误,STM32学习笔记(一)各种错误解决方法

硬件:STM32F103RCT6     编译软件:Keil uVision5    固件库:STM32Cube_FW_F1_V1.4.0

1、 error: L6236E: No section matches selector - no section to be FIRST/LAST.

这个错误是由于缺少starup汇编文件“startup_stm32f103xe.s”造成的,加上之后就不会有这个错误了。

2、 Error: L6218E: Undefined symbol HAL_RCC_GetHCLKFreq (referred from stm32f1xx_hal.o).

1)这个错误是由于HAL_RCC_GetHCLKFreq在头文件中声明了,但没有找到源文件中的函数体定义,HAL_RCC_GetHCLKFreq在stm32f1xx_hal_cortex.h中声明了,但stm32f1xx_hal_cortex.c没有被加到工程中来,加进来就可以了。

2)还有另一种情况,头文件和c文件都加到工程了,编译没有问题,但link时还是会出现这样的错误,这时是相关的外设使能变量没有定义,打开stm32f1xx_hal_conf.h文件,把对应变量定义的注释符支掉就可以了。

3、控制IO引脚的程序不起作用

main函数中已有GPIO初使化,设置,控制输出高低电平的代码。但执行后,IO引脚却没有输出高(或低电平)。原因是IO时钟没有使能,只要加上使能代码就可以了,__HAL_RCC_GPIOD_CLK_ENABLE();

4、warning:  #174-D: expression has no effect

意思是这行代码在程序中没有作用。

5、L6218E: Undefined symbol SystemInit

意思是没有定义SystemInit这个符号。原来在复位中断服务函数里面,调用了SystemInit这个函数,而这个函数在.s文件里面没有定义。如果下载了固件库,固件库里面有工程例子,可将例子中的system_stm32f1xx.c拷贝到自己的工程里面,这个文件中对SystemInit做了定义。

6、printf函数中明明加入了\n,但电脑接收到却没有换行

只用\n是不行的,要使用\r\n。

7、HAL_SD_Init函数运行后跳到HardFault_Handler

运行HAL_SD_Init前,增加一句hsd.Instance = SDIO;

8、ST-Link或J-Link,进入调试模式时,程序全速运行,点停止后,一直在汇编里循环

这是由于STM32 boot引脚状态设置不对,有可能是芯片虚焊,我的重新焊接一下就好了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值