mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-03 14:08:52 +08:00
PX4 System changes Supporting STM32H7
stm32:ToneAlarmInterfacePWM TIM15-TIM17 have a BDTR Register common:board_crashdump Add H7 support stm32/board_mcu_version:Support H7 PX4 ADC:Use 32 interface and resoution abstraction Added PX4 stm32h7 ADC driver stm32h7:adc fix ADC ready check fmu: handle BOARD_HAS_PWM==5 cmake: improve error handling for NuttX olddefconfig failures WorkQueueManager:Quiet loadmon stack warning camera_trigger:GPIO support < 6 GPIO Adjust stack sizes (under hw stack check) PX4 System changes Supporting STM32H7 PX4IO Driver aerotenna_ocpoc:ADC add px4_arch_adc_dn_fullcount init.cmake:Track Upstream change needing Make.def at config time PX4 System changes Supporting STM32H7 NuttX CMakeLists.txt Track upstream changes Common board_crashdump add header and px4 config NuttX simplify callinb make libapps Use UINT32_MAX for error return drivers:uavcannode NuttX chip is now hardware drivers:uavcanesc NuttX chip is now hardware px4io:Avoid Race on AP to PX4 IO upgrade
This commit is contained in:
committed by
Lorenz Meier
parent
58799dc7d1
commit
e847698c9f
@@ -94,70 +94,14 @@
|
||||
#error PWMIN defines are needed in board_config.h for this board
|
||||
#endif
|
||||
|
||||
/* PWMIN configuration */
|
||||
#if PWMIN_TIMER == 1
|
||||
# define PWMIN_TIMER_BASE STM32_TIM1_BASE
|
||||
# define PWMIN_TIMER_POWER_REG STM32_RCC_APB2ENR
|
||||
# define PWMIN_TIMER_POWER_BIT RCC_APB2ENR_TIM1EN
|
||||
# define PWMIN_TIMER_VECTOR STM32_IRQ_TIM1CC
|
||||
# define PWMIN_TIMER_CLOCK STM32_APB2_TIM1_CLKIN
|
||||
#elif PWMIN_TIMER == 2
|
||||
# define PWMIN_TIMER_BASE STM32_TIM2_BASE
|
||||
# define PWMIN_TIMER_POWER_REG STM32_RCC_APB1ENR
|
||||
# define PWMIN_TIMER_POWER_BIT RCC_APB1ENR_TIM2EN
|
||||
# define PWMIN_TIMER_VECTOR STM32_IRQ_TIM2
|
||||
# define PWMIN_TIMER_CLOCK STM32_APB1_TIM2_CLKIN
|
||||
#elif PWMIN_TIMER == 3
|
||||
# define PWMIN_TIMER_BASE STM32_TIM3_BASE
|
||||
# define PWMIN_TIMER_POWER_REG STM32_RCC_APB1ENR
|
||||
# define PWMIN_TIMER_POWER_BIT RCC_APB1ENR_TIM3EN
|
||||
# define PWMIN_TIMER_VECTOR STM32_IRQ_TIM3
|
||||
# define PWMIN_TIMER_CLOCK STM32_APB1_TIM3_CLKIN
|
||||
#elif PWMIN_TIMER == 4
|
||||
# define PWMIN_TIMER_BASE STM32_TIM4_BASE
|
||||
# define PWMIN_TIMER_POWER_REG STM32_RCC_APB1ENR
|
||||
# define PWMIN_TIMER_POWER_BIT RCC_APB1ENR_TIM4EN
|
||||
# define PWMIN_TIMER_VECTOR STM32_IRQ_TIM4
|
||||
# define PWMIN_TIMER_CLOCK STM32_APB1_TIM4_CLKIN
|
||||
#elif PWMIN_TIMER == 5
|
||||
# define PWMIN_TIMER_BASE STM32_TIM5_BASE
|
||||
# define PWMIN_TIMER_POWER_REG STM32_RCC_APB1ENR
|
||||
# define PWMIN_TIMER_POWER_BIT RCC_APB1ENR_TIM5EN
|
||||
# define PWMIN_TIMER_VECTOR STM32_IRQ_TIM5
|
||||
# define PWMIN_TIMER_CLOCK STM32_APB1_TIM5_CLKIN
|
||||
#elif PWMIN_TIMER == 8
|
||||
# define PWMIN_TIMER_BASE STM32_TIM8_BASE
|
||||
# define PWMIN_TIMER_POWER_REG STM32_RCC_APB2ENR
|
||||
# define PWMIN_TIMER_POWER_BIT RCC_APB2ENR_TIM8EN
|
||||
# define PWMIN_TIMER_VECTOR STM32_IRQ_TIM8CC
|
||||
# define PWMIN_TIMER_CLOCK STM32_APB2_TIM8_CLKIN
|
||||
#elif PWMIN_TIMER == 9
|
||||
# define PWMIN_TIMER_BASE STM32_TIM9_BASE
|
||||
# define PWMIN_TIMER_POWER_REG STM32_RCC_APB2ENR
|
||||
# define PWMIN_TIMER_POWER_BIT RCC_APB2ENR_TIM9EN
|
||||
# define PWMIN_TIMER_VECTOR STM32_IRQ_TIM1BRK
|
||||
# define PWMIN_TIMER_CLOCK STM32_APB2_TIM9_CLKIN
|
||||
#elif PWMIN_TIMER == 10
|
||||
# define PWMIN_TIMER_BASE STM32_TIM10_BASE
|
||||
# define PWMIN_TIMER_POWER_REG STM32_RCC_APB2ENR
|
||||
# define PWMIN_TIMER_POWER_BIT RCC_APB2ENR_TIM10EN
|
||||
# define PWMIN_TIMER_VECTOR STM32_IRQ_TIM1UP
|
||||
# define PWMIN_TIMER_CLOCK STM32_APB2_TIM10_CLKIN
|
||||
#elif PWMIN_TIMER == 11
|
||||
# define PWMIN_TIMER_BASE STM32_TIM11_BASE
|
||||
# define PWMIN_TIMER_POWER_REG STM32_RCC_APB2ENR
|
||||
# define PWMIN_TIMER_POWER_BIT RCC_APB2ENR_TIM11EN
|
||||
# define PWMIN_TIMER_VECTOR STM32_IRQ_TIM1TRGCOM
|
||||
# define PWMIN_TIMER_CLOCK STM32_APB2_TIM11_CLKIN
|
||||
#elif PWMIN_TIMER == 12
|
||||
# define PWMIN_TIMER_BASE STM32_TIM12_BASE
|
||||
# define PWMIN_TIMER_POWER_REG STM32_RCC_APB1ENR
|
||||
# define PWMIN_TIMER_POWER_BIT RCC_APB1ENR_TIM12EN
|
||||
# define PWMIN_TIMER_VECTOR STM32_IRQ_TIM8BRK
|
||||
# define PWMIN_TIMER_CLOCK STM32_APB1_TIM12_CLKIN
|
||||
#else
|
||||
# error PWMIN_TIMER must be a value between 1 and 12
|
||||
#endif
|
||||
/* Get the timer defines */
|
||||
#define INPUT_TIMER PWMIN_TIMER
|
||||
#include "timer_registers.h"
|
||||
#define PWMIN_TIMER_BASE TIMER_BASE
|
||||
#define PWMIN_TIMER_CLOCK TIMER_CLOCK
|
||||
#define PWMIN_TIMER_POWER_REG TIMER_CLOCK_POWER_REG
|
||||
#define PWMIN_TIMER_POWER_BIT TIMER_CLOCK_POWER_BIT
|
||||
#define PWMIN_TIMER_VECTOR TIMER_IRQ_REG
|
||||
|
||||
/*
|
||||
* HRT clock must be at least 1MHz
|
||||
|
||||
@@ -0,0 +1,188 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (C) 2019 PX4 Development Team. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name PX4 nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @file timer_registers.h
|
||||
*
|
||||
* Get architecture-specific timer register defines.
|
||||
* Usage:
|
||||
* #define INPUT_TIMER <timer>
|
||||
* #include "timer_registers.h"
|
||||
* # define <xy>_TIMER_BASE TIMER_BASE
|
||||
* # define <xy>_TIMER_CLOCK TIMER_CLOCK
|
||||
* # define <xy>_TIMER_POWER_REG TIMER_CLOCK_POWER_REG
|
||||
* # define <xy>_TIMER_POWER_BIT TIMER_CLOCK_POWER_BIT
|
||||
* # define <xy>_TIMER_VECTOR TIMER_IRQ_REG
|
||||
*
|
||||
*/
|
||||
|
||||
#include <px4_platform_common/px4_config.h>
|
||||
|
||||
#ifndef INPUT_TIMER
|
||||
# error "need to define INPUT_TIMER to use this header"
|
||||
#endif
|
||||
|
||||
#ifdef TIMER_BASE
|
||||
#undef TIMER_BASE
|
||||
#endif
|
||||
#ifdef TIMER_CLOCK_POWER_REG
|
||||
#undef TIMER_CLOCK_POWER_REG
|
||||
#endif
|
||||
#ifdef TIMER_CLOCK_POWER_BIT
|
||||
#undef TIMER_CLOCK_POWER_BIT
|
||||
#endif
|
||||
#ifdef TIMER_CLOCK
|
||||
#undef TIMER_CLOCK
|
||||
#endif
|
||||
#ifdef TIMER_IRQ_REG
|
||||
#undef TIMER_IRQ_REG
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if defined(CONFIG_ARCH_CHIP_STM32H7)
|
||||
|
||||
#if INPUT_TIMER == 1
|
||||
# define TIMER_BASE STM32_TIM1_BASE
|
||||
# define TIMER_CLOCK_POWER_REG STM32_RCC_APB2ENR
|
||||
# define TIMER_CLOCK_POWER_BIT RCC_APB2ENR_TIM1EN
|
||||
# define TIMER_IRQ_REG STM32_IRQ_TIMCC
|
||||
# define TIMER_CLOCK STM32_APB2_TIM1_CLKIN
|
||||
#elif INPUT_TIMER == 2
|
||||
# define TIMER_BASE STM32_TIM2_BASE
|
||||
# define TIMER_CLOCK_POWER_REG STM32_RCC_APB1LENR
|
||||
# define TIMER_CLOCK_POWER_BIT RCC_APB1LENR_TIM2EN
|
||||
# define TIMER_IRQ_REG STM32_IRQ_TIM2
|
||||
# define TIMER_CLOCK STM32_APB1_TIM2_CLKIN
|
||||
#elif INPUT_TIMER == 3
|
||||
# define TIMER_BASE STM32_TIM3_BASE
|
||||
# define TIMER_CLOCK_POWER_REG STM32_RCC_APB1LENR
|
||||
# define TIMER_CLOCK_POWER_BIT RCC_APB1LENR_TIM3EN
|
||||
# define TIMER_IRQ_REG STM32_IRQ_TIM3
|
||||
# define TIMER_CLOCK STM32_APB1_TIM3_CLKIN
|
||||
#elif INPUT_TIMER == 4
|
||||
# define TIMER_BASE STM32_TIM4_BASE
|
||||
# define TIMER_CLOCK_POWER_REG STM32_RCC_APB1LENR
|
||||
# define TIMER_CLOCK_POWER_BIT RCC_APB1LENR_TIM4EN
|
||||
# define TIMER_IRQ_REG STM32_IRQ_TIM4
|
||||
# define TIMER_CLOCK STM32_APB1_TIM4_CLKIN
|
||||
#elif INPUT_TIMER == 5
|
||||
# define TIMER_BASE STM32_TIM5_BASE
|
||||
# define TIMER_CLOCK_POWER_REG STM32_RCC_APB1LENR
|
||||
# define TIMER_CLOCK_POWER_BIT RCC_APB1LENR_TIM5EN
|
||||
# define TIMER_IRQ_REG STM32_IRQ_TIM5
|
||||
# define TIMER_CLOCK STM32_APB1_TIM5_CLKIN
|
||||
#elif INPUT_TIMER == 8
|
||||
# define TIMER_BASE STM32_TIM8_BASE
|
||||
# define TIMER_CLOCK_POWER_REG STM32_RCC_APB2ENR
|
||||
# define TIMER_CLOCK_POWER_BIT RCC_APB2ENR_TIM8EN
|
||||
# define TIMER_IRQ_REG STM32_IRQ_TIM8CC
|
||||
# define TIMER_CLOCK STM32_APB2_TIM8_CLKIN
|
||||
#elif INPUT_TIMER == 12
|
||||
# define TIMER_BASE STM32_TIM12_BASE
|
||||
# define TIMER_CLOCK_POWER_REG STM32_RCC_APB1LENR
|
||||
# define TIMER_CLOCK_POWER_BIT RCC_APB1LENR_TIM12EN
|
||||
# define TIMER_IRQ_REG STM32_IRQ_TIM12
|
||||
# define TIMER_CLOCK STM32_APB1_TIM12_CLKIN
|
||||
#else
|
||||
# error INPUT_TIMER must be a value between 1 and 12
|
||||
#endif
|
||||
|
||||
|
||||
#else // F4, F7
|
||||
|
||||
#if INPUT_TIMER == 1
|
||||
# define TIMER_BASE STM32_TIM1_BASE
|
||||
# define TIMER_CLOCK_POWER_REG STM32_RCC_APB2ENR
|
||||
# define TIMER_CLOCK_POWER_BIT RCC_APB2ENR_TIM1EN
|
||||
# define TIMER_IRQ_REG STM32_IRQ_TIM1CC
|
||||
# define TIMER_CLOCK STM32_APB2_TIM1_CLKIN
|
||||
#elif INPUT_TIMER == 2
|
||||
# define TIMER_BASE STM32_TIM2_BASE
|
||||
# define TIMER_CLOCK_POWER_REG STM32_RCC_APB1ENR
|
||||
# define TIMER_CLOCK_POWER_BIT RCC_APB1ENR_TIM2EN
|
||||
# define TIMER_IRQ_REG STM32_IRQ_TIM2
|
||||
# define TIMER_CLOCK STM32_APB1_TIM2_CLKIN
|
||||
#elif INPUT_TIMER == 3
|
||||
# define TIMER_BASE STM32_TIM3_BASE
|
||||
# define TIMER_CLOCK_POWER_REG STM32_RCC_APB1ENR
|
||||
# define TIMER_CLOCK_POWER_BIT RCC_APB1ENR_TIM3EN
|
||||
# define TIMER_IRQ_REG STM32_IRQ_TIM3
|
||||
# define TIMER_CLOCK STM32_APB1_TIM3_CLKIN
|
||||
#elif INPUT_TIMER == 4
|
||||
# define TIMER_BASE STM32_TIM4_BASE
|
||||
# define TIMER_CLOCK_POWER_REG STM32_RCC_APB1ENR
|
||||
# define TIMER_CLOCK_POWER_BIT RCC_APB1ENR_TIM4EN
|
||||
# define TIMER_IRQ_REG STM32_IRQ_TIM4
|
||||
# define TIMER_CLOCK STM32_APB1_TIM4_CLKIN
|
||||
#elif INPUT_TIMER == 5
|
||||
# define TIMER_BASE STM32_TIM5_BASE
|
||||
# define TIMER_CLOCK_POWER_REG STM32_RCC_APB1ENR
|
||||
# define TIMER_CLOCK_POWER_BIT RCC_APB1ENR_TIM5EN
|
||||
# define TIMER_IRQ_REG STM32_IRQ_TIM5
|
||||
# define TIMER_CLOCK STM32_APB1_TIM5_CLKIN
|
||||
#elif INPUT_TIMER == 8
|
||||
# define TIMER_BASE STM32_TIM8_BASE
|
||||
# define TIMER_CLOCK_POWER_REG STM32_RCC_APB2ENR
|
||||
# define TIMER_CLOCK_POWER_BIT RCC_APB2ENR_TIM8EN
|
||||
# define TIMER_IRQ_REG STM32_IRQ_TIM8CC
|
||||
# define TIMER_CLOCK STM32_APB2_TIM8_CLKIN
|
||||
#elif INPUT_TIMER == 9
|
||||
# define TIMER_BASE STM32_TIM9_BASE
|
||||
# define TIMER_CLOCK_POWER_REG STM32_RCC_APB2ENR
|
||||
# define TIMER_CLOCK_POWER_BIT RCC_APB2ENR_TIM9EN
|
||||
# define TIMER_IRQ_REG STM32_IRQ_TIM1BRK
|
||||
# define TIMER_CLOCK STM32_APB2_TIM9_CLKIN
|
||||
#elif INPUT_TIMER == 10
|
||||
# define TIMER_BASE STM32_TIM10_BASE
|
||||
# define TIMER_CLOCK_POWER_REG STM32_RCC_APB2ENR
|
||||
# define TIMER_CLOCK_POWER_BIT RCC_APB2ENR_TIM10EN
|
||||
# define TIMER_IRQ_REG STM32_IRQ_TIM1UP
|
||||
# define TIMER_CLOCK STM32_APB2_TIM10_CLKIN
|
||||
#elif INPUT_TIMER == 11
|
||||
# define TIMER_BASE STM32_TIM11_BASE
|
||||
# define TIMER_CLOCK_POWER_REG STM32_RCC_APB2ENR
|
||||
# define TIMER_CLOCK_POWER_BIT RCC_APB2ENR_TIM11EN
|
||||
# define TIMER_IRQ_REG STM32_IRQ_TIM1TRGCOM
|
||||
# define TIMER_CLOCK STM32_APB2_TIM11_CLKIN
|
||||
#elif INPUT_TIMER == 12
|
||||
# define TIMER_BASE STM32_TIM12_BASE
|
||||
# define TIMER_CLOCK_POWER_REG STM32_RCC_APB1ENR
|
||||
# define TIMER_CLOCK_POWER_BIT RCC_APB1ENR_TIM12EN
|
||||
# define TIMER_IRQ_REG STM32_IRQ_TIM8BRK
|
||||
# define TIMER_CLOCK STM32_APB1_TIM12_CLKIN
|
||||
#else
|
||||
# error INPUT_TIMER must be a value between 1 and 12
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user