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

相关推荐
en.en..3 小时前
STM32 定时中断逻辑拆解:为什么 “每 2 次中断翻一次 LED”,却是 1 秒亮 1 秒灭?
单片机·嵌入式硬件
jianqiang.xue3 小时前
单片机图形化编程:课程目录介绍 总纲
c++·人工智能·python·单片机·物联网·青少年编程·arduino
Let's GO Tiger5 小时前
DAPLINK可以烧录,但无法调试仿真
单片机·嵌入式硬件
ooolmf5 小时前
xunjixiaochejiaogai
stm32·单片机·嵌入式硬件
充哥单片机设计6 小时前
【STM32项目开源】基于STM32的智能家庭安防系统
stm32·单片机·嵌入式硬件
日更嵌入式的打工仔6 小时前
ENET_INIT卡死在DMA_MODE判断
单片机·嵌入式硬件
电鱼智能的电小鱼7 小时前
服装制造企业痛点解决方案:EFISH-SBC-RK3588 预测性维护方案
网络·人工智能·嵌入式硬件·算法·制造
szxinmai主板定制专家8 小时前
基于ARM+FPGA的无人机数据采集卡,6通道24bit采集
arm开发·嵌入式硬件·fpga开发·无人机·能源
点灯小铭12 小时前
基于单片机的智能水箱温度液位控制系统设计
单片机·嵌入式硬件·毕业设计·课程设计