天天看點

【Nucleo】STM32H743ZI - RT-Thread 最小系統

【Nucleo】STM32H743ZI - 入手篇

【Nucleo】STM32H743ZI - RT-Thread 最小系統

背景

  • 目标為進一步研究RT-Thread,掌握系統移植的基本方法
  • RT-Thread 最新代碼BSP裡,已經有STM32H743的BSP了。

操作方法

  • 為了工程的簡練,重構RT-Thread 工程
【Nucleo】STM32H743ZI - RT-Thread 最小系統
【Nucleo】STM32H743ZI - RT-Thread 最小系統
【Nucleo】STM32H743ZI - RT-Thread 最小系統
【Nucleo】STM32H743ZI - RT-Thread 最小系統
  • 解決重構路徑引起的問題:

【Nucleo】STM32H743ZI - RT-Thread 最小系統
【Nucleo】STM32H743ZI - RT-Thread 最小系統
  • 編譯工程

【Nucleo】STM32H743ZI - RT-Thread 最小系統
【Nucleo】STM32H743ZI - RT-Thread 最小系統

運作

  • 這裡LED等的引腳,需要跟實際原理圖對應上
LED 引腳 RT-Thread Pin 編号
LED_R 紅色 PB14 GET_PIN(B, 14)
LED_G 綠色 PB0 GET_PIN(B, 0)
LED_Y 黃色 PE1 GET_PIN(E, 1)
#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>

/* defined the LEDR LEDG LEDY pins */
#define LEDR_PIN    GET_PIN(B, 14)
#define LEDG_PIN    GET_PIN(B, 0)
#define LEDY_PIN    GET_PIN(E, 1)

int main(void)
{
    int count = 1;

    /* set LEDS pin mode to output */
    rt_pin_mode(LEDR_PIN, PIN_MODE_OUTPUT);
    rt_pin_mode(LEDG_PIN, PIN_MODE_OUTPUT);
    rt_pin_mode(LEDY_PIN, PIN_MODE_OUTPUT);

    rt_kprintf("hello, STM32H743 RT-Thread!\r\n");

    while (count++)
    {
        rt_pin_write(LEDR_PIN, PIN_HIGH);
        rt_pin_write(LEDG_PIN, PIN_HIGH);
        rt_pin_write(LEDY_PIN, PIN_HIGH);
        rt_thread_mdelay(500);
        rt_pin_write(LEDR_PIN, PIN_LOW);
        rt_pin_write(LEDG_PIN, PIN_LOW);
        rt_pin_write(LEDY_PIN, PIN_LOW);
        rt_thread_mdelay(500);
    }
    return RT_EOK;
}
           
【Nucleo】STM32H743ZI - RT-Thread 最小系統
  • 驗證通過,LED正常閃爍,序列槽MSH 正常。

總結

  • STM32H743 資源比較豐富,有2M Flash,SRAM也比較大(1M,使用者512K),可以做點更複雜的工作。
  • 繼續研究RT-Thread 移植與使用,總結與積累,學以緻用。

繼續閱讀