日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

移植 stm32f7_移植zephyrOS到正点原子apollo STM32F767上

發(fā)布時(shí)間:2024/1/23 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 移植 stm32f7_移植zephyrOS到正点原子apollo STM32F767上 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

移植(port)zephyrOS到正點(diǎn)原子apollo STM32F767開(kāi)發(fā)板上,按照官方移植文檔[1],在 boardsarm 中復(fù)制nucleo_f767zi,并改名apollo_f767ig,分別重命名nucleo_f767zi.dts、nucleo_f767zi.yaml、nucleo_f767zi_defconfig為apollo_f767ig.dts、apollo_f767ig.yaml、apollo_f767ig_defconfig,并修改內(nèi)容如下:

apollo_f767ig.dts

/** Copyright (c) 2019 Roland Ma** SPDX-License-Identifier: Apache-2.0*//dts-v1/; #include <mem.h> #include <st/f7/stm32f767.dtsi>/ {model = "Alientek apollo-f767ig board";compatible = "Alientek,apollo-f767ig", "st,stm32f767";chosen {zephyr,console = &usart1;zephyr,shell-uart = &usart1;zephyr,sram = &sram0;zephyr,flash = &flash0;zephyr,dtcm = &dtcm;zephyr,can-primary = &can1;};//存儲(chǔ)控制器soc {flash-controller@40023c00 {flash0: flash@8000000 {reg = <0x08000000 DT_SIZE_K(2048)>;};};};//紅DS0 綠DS1兩個(gè)LEDleds {compatible = "gpio-leds";red_led: led_0 {gpios = <&gpiob 1 GPIO_ACTIVE_HIGH>;label = "DS0";};green_led: led_1 {gpios = <&gpiob 0 GPIO_ACTIVE_HIGH>;label = "DS1";};};//key0 ley1 ley2 三個(gè)按鍵gpio_keys {compatible = "gpio-keys";user_button0: button_0 {label = "key0";gpios = <&gpioh 3 GPIO_ACTIVE_HIGH>;};user_button1: button_1 {label = "key1";gpios = <&gpioh 2 GPIO_ACTIVE_HIGH>;};user_button2: button_2 {label = "key2";gpios = <&gpioc 13 GPIO_ACTIVE_HIGH>;};};//別名aliases {led0 = &red_led;led1 = &green_led;sw0 = &user_button0;}; };//串口1 波特率115200 &usart1 {current-speed = <115200>;status = "okay"; };

apollo_f767ig.yaml

identifier: apollo_f767ig name: alientek apollo_f767ig type: mcu arch: arm toolchain:- zephyr- gnuarmemb- xtools ram: 512 flash: 2048 supported:- uart- gpio- usb_device- i2c- pwm- spi- watchdog- counter- can

apollo_f767ig_defconfig

# SPDX-License-Identifier: Apache-2.0CONFIG_SOC_SERIES_STM32F7X=y CONFIG_SOC_STM32F767XX=y #系統(tǒng)時(shí)鐘216Mhz CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=216000000# Enable MPU CONFIG_ARM_MPU=y# Enable UART CONFIG_SERIAL=y# Console CONFIG_CONSOLE=y CONFIG_UART_CONSOLE=y# Enable Pinmux CONFIG_PINMUX=y# Enable GPIO CONFIG_GPIO=y# Clock Configuration CONFIG_CLOCK_CONTROL=y# HSE外部晶振時(shí)鐘輸入 25MHZ CONFIG_CLOCK_STM32_HSE_CLOCK=25000000 #PLL輸出作為SYSCLK源 CONFIG_CLOCK_STM32_SYSCLK_SRC_PLL=y # HSE作為PLL輸入 CONFIG_CLOCK_STM32_PLL_SRC_HSE=y# PLL輸出216MHZ CONFIG_CLOCK_STM32_PLL_M_DIVISOR=25 CONFIG_CLOCK_STM32_PLL_N_MULTIPLIER=432 CONFIG_CLOCK_STM32_PLL_P_DIVISOR=2 CONFIG_CLOCK_STM32_PLL_Q_DIVISOR=9 CONFIG_CLOCK_STM32_AHB_PRESCALER=1 CONFIG_CLOCK_STM32_APB1_PRESCALER=4 CONFIG_CLOCK_STM32_APB2_PRESCALER=2

并修改Kconfig.defconfig、Kconfig.board

Kconfig.defconfig

# APOLLO_F767IG board configuration# Copyright (c) 2019 Roland Ma # SPDX-License-Identifier: Apache-2.0if BOARD_APOLLO_F767IGconfig BOARDdefault "apollo_f767ig"if NETWORKINGconfig NET_L2_ETHERNETdefault yconfig ETH_STM32_HALdefault yendif # NETWORKINGendif # BOARD_NUCLEO_F767ZI

Kconfig.board

# APOLLO_F767IG board configuration# Copyright (c) 2019 Roland Ma # SPDX-License-Identifier: Apache-2.0 #apollo_f767ig config BOARD_APOLLO_F767IGbool "Alientek STM32 F767IG Development Board"depends on SOC_STM32F767XX

為了使用USART1串口,還需更改pinmux.c文件,指定USART1使用PA9、PA10作為串口的TX、RX引腳

/** Copyright (c) 2019 Roland Ma** SPDX-License-Identifier: Apache-2.0*/#include <kernel.h> #include <device.h> #include <init.h> #include <drivers/pinmux.h> #include <sys/sys_io.h>#include <pinmux/stm32/pinmux_stm32.h>static const struct pin_config pinconf[] = { //配置USART1引腳 #if DT_NODE_HAS_STATUS(DT_NODELABEL(usart1), okay) && CONFIG_SERIAL{STM32_PIN_PA9, STM32F7_PINMUX_FUNC_PA9_USART1_TX},{STM32_PIN_PA10, STM32F7_PINMUX_FUNC_PA10_USART1_RX}, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(usart2), okay) && CONFIG_SERIAL{ STM32_PIN_PD5, STM32F7_PINMUX_FUNC_PD5_USART2_TX },{ STM32_PIN_PD6, STM32F7_PINMUX_FUNC_PD6_USART2_RX },{ STM32_PIN_PD4, STM32F7_PINMUX_FUNC_PD4_USART2_RTS },{ STM32_PIN_PD3, STM32F7_PINMUX_FUNC_PD3_USART2_CTS }, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(usart3), okay) && CONFIG_SERIAL{ STM32_PIN_PD8, STM32F7_PINMUX_FUNC_PD8_USART3_TX },{ STM32_PIN_PD9, STM32F7_PINMUX_FUNC_PD9_USART3_RX }, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(usart6), okay) && CONFIG_SERIAL{ STM32_PIN_PG14, STM32F7_PINMUX_FUNC_PG14_USART6_TX },{ STM32_PIN_PG9, STM32F7_PINMUX_FUNC_PG9_USART6_RX }, #endif #ifdef CONFIG_ETH_STM32_HAL{ STM32_PIN_PC1, STM32F7_PINMUX_FUNC_PC1_ETH },{ STM32_PIN_PC4, STM32F7_PINMUX_FUNC_PC4_ETH },{ STM32_PIN_PC5, STM32F7_PINMUX_FUNC_PC5_ETH },{ STM32_PIN_PA1, STM32F7_PINMUX_FUNC_PA1_ETH },{ STM32_PIN_PA2, STM32F7_PINMUX_FUNC_PA2_ETH },{ STM32_PIN_PA7, STM32F7_PINMUX_FUNC_PA7_ETH },{ STM32_PIN_PG11, STM32F7_PINMUX_FUNC_PG11_ETH },{ STM32_PIN_PG13, STM32F7_PINMUX_FUNC_PG13_ETH },{ STM32_PIN_PB13, STM32F7_PINMUX_FUNC_PB13_ETH }, #endif /* CONFIG_ETH_STM32_HAL */ #ifdef CONFIG_USB_DC_STM32{ STM32_PIN_PA11, STM32F7_PINMUX_FUNC_PA11_OTG_FS_DM },{ STM32_PIN_PA12, STM32F7_PINMUX_FUNC_PA12_OTG_FS_DP }, #endif /* CONFIG_USB_DC_STM32 */ #if DT_NODE_HAS_STATUS(DT_NODELABEL(i2c1), okay) && CONFIG_I2C{ STM32_PIN_PB8, STM32F7_PINMUX_FUNC_PB8_I2C1_SCL },{ STM32_PIN_PB9, STM32F7_PINMUX_FUNC_PB9_I2C1_SDA }, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(pwm1), okay) && CONFIG_PWM{ STM32_PIN_PE13, STM32F7_PINMUX_FUNC_PE13_PWM1_CH3 }, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(spi1), okay) && CONFIG_SPI #ifdef CONFIG_SPI_STM32_USE_HW_SS{ STM32_PIN_PA4, STM32F7_PINMUX_FUNC_PA4_SPI1_NSS }, #endif /* CONFIG_SPI_STM32_USE_HW_SS */{ STM32_PIN_PA5, STM32F7_PINMUX_FUNC_PA5_SPI1_SCK },{ STM32_PIN_PA6, STM32F7_PINMUX_FUNC_PA6_SPI1_MISO },{ STM32_PIN_PA7, STM32F7_PINMUX_FUNC_PA7_SPI1_MOSI }, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(can1), okay) && CONFIG_CAN{STM32_PIN_PD0, STM32F7_PINMUX_FUNC_PD0_CAN_RX},{STM32_PIN_PD1, STM32F7_PINMUX_FUNC_PD1_CAN_TX}, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(adc1), okay) && CONFIG_ADC{ STM32_PIN_PA0, STM32F7_PINMUX_FUNC_PA0_ADC123_IN0 }, #endif };static int pinmux_stm32_init(struct device *port) {ARG_UNUSED(port);stm32_setup_pins(pinconf, ARRAY_SIZE(pinconf));return 0; }SYS_INIT(pinmux_stm32_init, PRE_KERNEL_1,CONFIG_PINMUX_STM32_DEVICE_INITIALIZATION_PRIORITY);

命令函行編譯

west build -p auto -b apollo_f767ig samplesbasicblinky

運(yùn)行

知乎視頻?www.zhihu.com

參考

  • ^移植到開(kāi)發(fā)板幫助文檔?https://docs.zephyrproject.org/latest/guides/porting/board_porting.html
  • 總結(jié)

    以上是生活随笔為你收集整理的移植 stm32f7_移植zephyrOS到正点原子apollo STM32F767上的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。