STM32-NUCLEO-external-program

NUCLEO板子对外部stm32进行编程下载

环境

  1. NUCLEO-F401RE板子
  2. stm32f103rb核心板(源地)
  3. 软件环境见STM32-Dev-Mac

步骤

  1. 硬件连线,拔掉NUCLEO板子上的CN2两个跳线帽,然后连接CN4到编程的目标板(stm32f103rb核心板),电源不连单独供电,连接图如下

    NUCLEO 从上(SWD)到下(CN4) 目标板 描述
    VDD_TARGET 1 vdd电源
    SWCLK 2 SWDCLK 时钟
    GND 3 GND
    SWDIO 4 SWDIO 数据输入/输出
    NRST 5 目标MCU的RESET
    SWO 6 保留

    stm32

  2. 打开STM32CubeMX软件,新建个工程,这里直接选STM32F103RBTx的NUCLEO套版,这里直接在这个套版上基础修改

  3. 设置led输出引脚:在pinout引脚设置界面去掉PA5,修改PC13为GPIO_Output输出,并打上LED用户标签

    QQ20180722-105903

  4. 修改时钟引脚设置,由于自己的板子用的高速时钟(HSE)和低速时钟(LSE)都用的外部时钟,所以这里切换时钟模式都为外部(Crystal)

    QQ20180722-105957

  5. 修改时钟配置,修改晶振频率和自己板子一致,并且换成外部,然后设置倍数,如果倍数设置高于频率,会提示红报错,选择可用最高倍数即可,该板子只能选X9

    QQ20180722-110120

  6. 最后生成makerfile类型工程

  7. 修改Makefile文件,C_SOURCES去重,BINPATH设置路径/usr/local/bin/

  8. main.c添加led流水灯代码,引脚的名称注意用刚刚设置的标签名字

    1
    2
    3
    4
    5
    6
    7
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
    HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
    HAL_Delay(500);
    HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
    HAL_Delay(1000);
  9. 编译make下载st-flash write ./build/<项目名>.bin 0x8000000

使用CLion进行项目编译运行

  1. build->OpenOCD Support->board config file:st_nucleo_f103rb.cfg
  2. 编译运行手动按reset

注意:使用openocd时,NRST一定要连!

但是:没有线引出来无法连接,所以运行时立马手动按reset键也可以成功。

参考

STM32Cube工具学习笔记(一)Cube配置

Nucleo-64板载ST-LINK/ V2-1调试器 之对外界编程

在Windows上配置Eclipse中配置STM32的开发调试环境