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

相关推荐
17(无规则自律)17 小时前
【CSAPP 读书笔记】第二章:信息的表示和处理
linux·嵌入式硬件·考研·高考
@good_good_study18 小时前
FreeRTOS内存管理
单片机
Hello_Embed19 小时前
libmodbus 移植 STM32(基础篇)
笔记·stm32·单片机·学习·modbus
qq_3975623120 小时前
QT工程 , 生成别的电脑运行的exe程序
嵌入式硬件·qt
qqssss121dfd21 小时前
STM32H750XBH6的ETH模块移植LWIP
网络·stm32·嵌入式硬件
想放学的刺客1 天前
单片机嵌入式试题(第27期)设计可移植、可配置的外设驱动框架的关键要点
c语言·stm32·单片机·嵌入式硬件·物联网
天昊吖1 天前
stc8H启用DMA发送后 卡住【踩坑日志】
单片机
李永奉1 天前
杰理芯片SDK开发-ENC双麦降噪配置/调试教程
人工智能·单片机·嵌入式硬件·物联网·语音识别
BackCatK Chen1 天前
第 1 篇:软件视角扫盲|TMC2240 软件核心特性 + 学习路径(附工具清单)
c语言·stm32·单片机·学习·电机驱动·保姆级教程·tmc2240
兆龙电子单片机设计1 天前
【STM32项目开源】STM32单片机多功能电子秤
stm32·单片机·开源·毕业设计·智能家居