NuttX STM32F205 调试笔记
经过各种调试,整理如下:
-
程序最开始跑飞
- 出现
hard fault
异常。 - 怀疑是 Bootloader 干扰,通过在
.config
中关闭 Bootloader 才能正确进入执行顺序。
- 出现
-
UART1 宏定义问题
- 最开始
board
中 UART1 宏设置不正确。 - 通过删除不必要的设置,并增加调试配置,在 GDB 中观察到可以输出,但程序一直等待接收。
- 强行退出后,NSH 线程挂掉。
- 最开始
-
串口波特率问题
- 通过示波器测得串口最小单位为 18.4 μs。
- 将串口设置成 56000 波特后可以正常通信。
- 怀疑晶振频率未正确配置,最终修改如下:
diff
kelland@HP-Desktop-PC:~/nuttx_new_stm32f205/nuttx$ git diff .
diff --git a/boards/arm/stm32/photon/include/board.h b/boards/arm/stm32/photon/include/board.h
index 3adecc20f6..3401890eca 100644
--- a/boards/arm/stm32/photon/include/board.h
+++ b/boards/arm/stm32/photon/include/board.h
@@ -66,11 +66,11 @@
/* HSI - 16 MHz RC factory-trimmed
* LSI - 32 KHz RC
- * HSE - On-board crystal frequency is 26MHz
+ * HSE - On-board crystal frequency is 12MHz
* LSE - 32.768 kHz
*/
-#define STM32_BOARD_XTAL 26000000ul
+#define STM32_BOARD_XTAL 12000000ul
#define STM32_HSI_FREQUENCY 16000000ul
#define STM32_LSI_FREQUENCY 32000
@@ -90,7 +90,7 @@
* = 48,000,000
*/
-#define STM32_PLLCFG_PLLM RCC_PLLCFG_PLLM(26)
+#define STM32_PLLCFG_PLLM RCC_PLLCFG_PLLM(12)
#define STM32_PLLCFG_PLLN RCC_PLLCFG_PLLN(240)
#define STM32_PLLCFG_PLLP RCC_PLLCFG_PLLP_2
#define STM32_PLLCFG_PLLQ RCC_PLLCFG_PLLQ(5)
@@ -228,6 +228,13 @@
# define GPIO_USART1_TX GPIO_USART1_TX_1
#endif
+/* UART2 */
+
+#ifdef CONFIG_STM32_USART2
+# define GPIO_USART2_RX GPIO_USART2_RX_1 /* PA3 */
+# define GPIO_USART2_TX GPIO_USART2_TX_1 /* PA2 */
+#endif
+
/* SPI1 */
#define GPIO_SPI1_MISO GPIO_SPI1_MISO_1 /* PA6 */
diff --git a/boards/arm/stm32/photon/scripts/photon_jtag.ld b/boards/arm/stm32/photon/scripts/photon_jtag.ld
index 67d7346c05..f1d93d5d3a 100644
--- a/boards/arm/stm32/photon/scripts/photon_jtag.ld
+++ b/boards/arm/stm32/photon/scripts/photon_jtag.ld
@@ -32,7 +32,7 @@
MEMORY
{
flash (rx) : ORIGIN = 0x08000000, LENGTH = 1024K
- sram (rwx) : ORIGIN = 0x20000000, LENGTH = 112K
+ sram (rwx) : ORIGIN = 0x20000000, LENGTH = 128K
}
OUTPUT_ARCH(arm)
-
.config 修改
- 关闭
DFU Bootloader
- 启用
USART2
串口和控制台
kelland@HP-Desktop-PC:~/nuttx_new_stm32f205/nuttx$ diff boards/arm/stm32/photon/configs/nsh/defconfig defconfig
31d30
< CONFIG_PHOTON_DFU_BOOTLOADER=y
45a45CONFIG_STM32_USART2=y
47c47
< CONFIG_USART1_SERIAL_CONSOLE=y
CONFIG_USART2_SERIAL_CONSOLE=y
- 关闭