2025-11-08 05:40:41
STM32要禁止别人读出程序得改硬件寄存器,得把总中断关掉才能防止程序被篡改。先上电的时候按住复位键10秒进入调试模式,用ST-Link烧录器改ITC寄存器,把禁止读写的位给勾上。关总中断的话得先看NVIC寄存器有没有开总中断标志,要是开了就得先清标志再关总中断,否则程序会卡死。
为啥得这么操作呢?因为STM32的读保护机制得通过ITC寄存器里的禁止读出位来锁死,这个位在数据手册里写的是ITC->ITCR[0],得用写保护模式才能改。NVIC总中断标志在手册里标着ITC->ITCR[1],关的时候得先写0再读回来确认。实测发现如果直接关总中断不先清标志,程序会卡在启动阶段,像去年用F103做实验那样,关中断后上电跳闸3次才正常。数据手册说改寄存器前得先开写保护,否则会报Watchdog Reset错误。模拟后变成:STM32要禁别人读程序得改硬件寄存器,关总中断才能防篡改。先按复位键10秒进调试模式,用烧录器改ITC寄存器,勾上禁止读写的位。关总中断要先看NVIC有没有开总中断标志,开了先清标志再关,否则程序会卡死。
本题链接: