调试STM32F103ZET6过程中,自己写了下Systick滴答配置和中断函数,编译完无错误。迫不及待的将程序下到板子中,运行灯无闪烁。仔细查了下程序,管脚配置、外设时钟开启、中断配置未发现问题。使用开发器仿真后发现,程序停留在如下系统文件,红色位置。
SysTick_Handler PROC
EXPORT SysTick_Handler [WEAK]
B .
ENDP
从网上查了原因,说是有中断未配置或中断配置有误。仔细看了一遍,才发现自己写的函数名如下:
void Systick_Handler(void) ----------和系统文件中定义名不一样,一个大写的T,而我写的是小写的t。
立即改掉,运行灯倒是开始闪,但和预想中的频率差太多,考虑是系统时钟配置和频率选择有问题。仔细看了看,在system_stm32f10x.c文件中有个系统时钟的配置函数
void SystemInit (void),立刻将自己写的替换掉,正常了。先记下来,查查是什么原因。
另外,在KEIL5以上版本中,不需要在Options for Target "xxx"中的C/C++选项卡中,在Define:中再填入STM32F10X_HD,因为KEIL5以上版本会根据你选择的CPU型号自动给你定义好。