nuttx实战项目2:蓝牙有线通信板之一,nsh串口调试

NuttX STM32F205 调试笔记

经过各种调试,整理如下:

  1. 程序最开始跑飞

    • 出现 hard fault 异常。
    • 怀疑是 Bootloader 干扰,通过在 .config 中关闭 Bootloader 才能正确进入执行顺序。
  2. UART1 宏定义问题

    • 最开始 board 中 UART1 宏设置不正确。
    • 通过删除不必要的设置,并增加调试配置,在 GDB 中观察到可以输出,但程序一直等待接收。
    • 强行退出后,NSH 线程挂掉。
  3. 串口波特率问题

    • 通过示波器测得串口最小单位为 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)
  1. .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
    45a45

    CONFIG_STM32_USART2=y
    47c47
    < CONFIG_USART1_SERIAL_CONSOLE=y


    CONFIG_USART2_SERIAL_CONSOLE=y

相关推荐
会不再投降2192 小时前
初识嵌入式历史发展与生态
stm32
LCG元3 小时前
STM32 定时器编码器接口模式电机测速实战:从 CubeMX 配置到 M 法转速计算与溢出处理
stm32·单片机·嵌入式硬件
星河单片机6 小时前
STM32驱动WaterSensor水位传感器+OLED显示完整原理与实验
stm32·单片机·嵌入式硬件
子文雨6 小时前
基于 uC3845 与 ATtiny13 双芯片架构的 8.4V/2.5Ah 锂电池智能充电器设计
单片机·嵌入式硬件·算法
快秃头的码农7 小时前
esp32-s3移植lvgl总结
嵌入式硬件·esp32-s3
恒锐丰科技林技术员8 小时前
EG1191 宽压降压 DC‑DC 芯片解析:高性价比工业电源方案
经验分享·嵌入式硬件·硬件工程
千秋岁rr8 小时前
8TIM编码器接口
stm32
智购科技无人售货机工厂店8 小时前
2026自动售货机大屏交互设计原则:从信息层级到视觉动线的工程实践~YH
运维·python·单片机·嵌入式硬件·自动化·交互
艾芯微科技11 小时前
SKY13370‑374LF|0.5‑6GHz SPDT 射频开关,WLAN/LTE 射频前端实用器件
网络·单片机·嵌入式硬件·集成测试·51单片机
jianqiang.xue13 小时前
收官:从v0.1到“研发新常态“,一套嵌入式智能体的落地与边界
stm32·单片机·物联网·架构·esp32