STM32踩坑笔记
一、IAR开发7.0以上版本
警告:Warning[25]: Label ‘NMI_Handler’ is defined pubweak in a section implicitly declared root
该警告存在于IAR7.0以上版本环境下的STM32的启动文件xxx.s中,根据百度搜索的回复是高版本IAR取消使用STM32固件库提供的内核文件,即core_cm3。确实也是如此,在IAR中不需要该文件工程也一样正常编译运行。
解决方法:
在所有SECTION后方添加NOROOT语句,修改如下:
SECTION .text:CODE:REORDER:NOROOT(1)
二、STM32定时器1运行异常
该问题在Keil5(MDK V5.37.0.0)环境下没有出现,定时器1代码如下:
void TIM1_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //使能定时器1时钟
TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
TIM_TimeBaseInit(TIM1