当激活 BSL 时,下列设置生效:
- 停止监视计时器
- 禁用所有中断 (GIE=0)
- V1.10
堆栈指针不会被修改,除非它指向已排除的内存区域。如果是,则初始化为 021Ah。
V1.30 或更高版本
如果 BSL 由程序通过热启动矢量调用,则堆栈指针不会被修改。如果 BSL 由 BSL RESET 序列启动或者由程序通过冷启动矢量调用,则初始化为 0220h。 - F1xx
确定基本时钟模块,使最低频率为 1.5MHz:
只在冷启动时
SR,BCSCTL1 = 85h(RSEL = 5,XT2Off = 1)
DCOCTL = 80h(DCO = 4,MOD = 0), BCSCTL2 = 00h:只在冷启动时, SCG1 = 00h(SMCLK 开启)
F2xx
确定基本时钟模块,使最低频率为 1.5MHz:
只在冷启动时
SR,BCSCTL1 = 88h(RSEL = 8,XT2Off = 1)
DCOCTL = 80h(DCO = 4,MOD = 0)
, BCSCTL2 = 00h:只在冷启动时, SCG1 = 00h(SMCLK 开启)
F4xx
确定 FLL 振荡器和系统时钟,使最低频率为 1.5MHz:
SCFI0 = 00h(D = 0,FN_x = 0)
SCFI1 = 98h (N_DCO)
SCFQCTL:(M = 0)
SR:SCG0 = 1(FLL 环路控制关闭)
只在冷启动时, FLL_CTL1 = 00h - SW-UART:Timer_A 在带有 MCLK 源的连续模式 (Div=1) 下运行
CCR0 用于比较
CCTL0 用于 CCIFG0 的轮询 - TX 引脚设置为 RS232 闲置状态输出高电平
- RX 引脚设置为输入
- 受密码保护的命令被锁定(只在冷启动时)
系统初始化之后,BSL准备运行,并等待第一个同步序列 (SS),接着是包含第一个 BSL 命令的数据帧。