# STM32筆記 把一些曾經卡很久的錯記錄下來 - 用printf()沒重寫fputc()程式會卡住 - NUCLEO-L053R8的開發版RCC若使用HSE,會是預設8MHz的1/2,所以UART的Baud Rate也會是原來的1/2 - I2C的Address要在最後加上R/W - RTC使用`GetTime()`前要先`GetDate()`,數值才會更新 ![](https://i.imgur.com/6LJ1Yv8.png) https://www.st.com/resource/en/user_manual/dm00113898-description-of-stm32l0-hal-and-low-layer-drivers-stmicroelectronics.pdf - 中斷Callback函數裡若要使用`HAL_Delay()`,要設定中斷的優先順序 ![](https://i.imgur.com/tvuqTWZ.png) 兩個中斷的優先權不能一樣 基本上System tick timer 要優先於(數值小於)其他中斷 - `printf()` + USART keil的編譯Target要選擇MicroLIB,應該說是`printf()`要做重新導向就要 https://blog.csdn.net/DDTS_ZD/article/details/124334348 - ADC 沒事Prescaler設定一下吧,太快會出事 RTC setTime的結果很奇怪,結果發現是ADC用DMA的問題?? 還有sample time 的 cycles數也可以設多一點 - Callback function 的執行時間太長,觸發又太快,可能導致都在跑他 例如Timer Callback 裡面有delay 4ms 但觸發頻率大於250Hz - ~~原來`HAL_GPIO_WritePin()`的`PinState`只能給0 or 1,不然assert會失敗...~~ > 沒事 是我在搞笑 有上拉請記得設Output Drain USE_FULL_ASSERT 在 hal_config - ![](https://hackmd.io/_uploads/rJKXZcEp3.png)