混用HAL和LL库时,核心原则是:每个外设只由一种库管理初始化,避免重复调用。具体做法:1) 在HAL初始化前,用LL库配置时钟和GPIO(如LL_GPIO_Init),然后调用HAL_xxx_Init完成外设核心初始化;2) 中断优先级统一用HAL_NVIC_SetPriority或LL_EXTI_Init的优先级设置,但不要混用两者设置同一中断,建议以HAL为主,LL只做辅助配置;3) 若需动态切换,先调用HAL_xxx_DeInit复位外设,再重新初始化。实操建议:在工程中建立外设管理表,记录每个外设的初始化状态和库归属,避免重复调用。若发现冲突,检查是否同时调用了HAL_xxx_Init和LL_xxx_Init,或中断处理函数中重复使能/清除标志。
mcuku 阿沐 · 2026-08-27