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

相关推荐
高速上的乌龟14 分钟前
Lattice LFCPNX-100 HSB+Fpga开发详解: MAC+PCS以太网SFP光口传输
单片机·嵌入式硬件·fpga开发
易水寒陈23 分钟前
单片机的hardfault打印信息定位错误
单片机
振浩微433射频芯片33 分钟前
告别“遥控失灵”:如何评估国产433芯片在智能家居领域的可靠性?
网络·单片机·嵌入式硬件·物联网·智能家居
互联科技报41 分钟前
极海APM32F427高性能MCU赋能中高端PLC,筑牢工业自动化控制核心
单片机·嵌入式硬件·自动化
天天爱吃肉82181 小时前
新能源汽车测试工程师工作笔记:VCU输出PWM波常见问题排查
笔记·功能测试·嵌入式硬件·汽车
0南城逆流01 小时前
【网站分享】常用网站分享三:STM32常用模块链接
stm32·单片机·嵌入式硬件
星夜夏空992 小时前
STM32单片机学习(17) —— 串口外设中断
stm32·单片机·学习
hhcgchpspk2 小时前
easyx按键游戏
c++·stm32·单片机·游戏·easyx
行走的大喇叭2 小时前
Linux kernel目录、配置文件介绍
linux·单片机·嵌入式硬件
0南城逆流02 小时前
【网站分享】常用网站分享四:STM32常用外设链接
stm32·单片机·嵌入式硬件