From c339386c07b58f53f992b5a3edfff392f6251082 Mon Sep 17 00:00:00 2001 From: greedyhao Date: Wed, 27 Jan 2021 15:03:55 +0800 Subject: [bsp][stm32] fix PWMN_CMD_DISABLE config --- bsp/stm32/libraries/HAL_Drivers/drv_pwm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_pwm.c b/bsp/stm32/libraries/HAL_Drivers/drv_pwm.c index 2b0488d347..3ce0272ad0 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_pwm.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_pwm.c @@ -314,7 +314,7 @@ static rt_err_t drv_pwm_control(struct rt_device_pwm *device, int cmd, void *arg case PWM_CMD_ENABLE: return drv_pwm_enable(htim, configuration, RT_TRUE); case PWMN_CMD_DISABLE: - configuration->complementary = RT_TRUE; + configuration->complementary = RT_FALSE; case PWM_CMD_DISABLE: return drv_pwm_enable(htim, configuration, RT_FALSE); case PWM_CMD_SET: -- cgit v1.3.1 From 2b50fbafe282b04bb0abdac46166a7e33a42f519 Mon Sep 17 00:00:00 2001 From: iysheng Date: Fri, 5 Feb 2021 11:45:05 +0800 Subject: [bsp][gd32103c-eval] Add hwtimer driver --- bsp/gd32103c-eval/Kconfig | 30 ++ .../Libraries/CMSIS/GD/GD32F1xx/Include/gd32f10x.h | 200 ++++---- .../Include/gd32f10x_rcc.h | 22 +- .../Source/gd32f10x_timer.c | 74 +-- bsp/gd32103c-eval/README.md | 1 + bsp/gd32103c-eval/drivers/SConscript | 3 + bsp/gd32103c-eval/drivers/drv_comm.h | 27 ++ bsp/gd32103c-eval/drivers/drv_hwtimer.c | 540 +++++++++++++++++++++ bsp/gd32103c-eval/drivers/drv_hwtimer.h | 38 ++ 9 files changed, 787 insertions(+), 148 deletions(-) create mode 100644 bsp/gd32103c-eval/drivers/drv_comm.h create mode 100644 bsp/gd32103c-eval/drivers/drv_hwtimer.c create mode 100644 bsp/gd32103c-eval/drivers/drv_hwtimer.h diff --git a/bsp/gd32103c-eval/Kconfig b/bsp/gd32103c-eval/Kconfig index d8bfdde174..07915b7895 100644 --- a/bsp/gd32103c-eval/Kconfig +++ b/bsp/gd32103c-eval/Kconfig @@ -66,5 +66,35 @@ menu "On-chip Peripheral Drivers" bool "using adc1" default n endif + menuconfig BSP_USING_HWTIMER + bool "Enable hwtimer" + default n + select RT_USING_HWTIMER + if BSP_USING_HWTIMER + config BSP_USING_HWTIMER0 + bool "using hwtimer0" + default n + config BSP_USING_HWTIMER1 + bool "using hwtimer1" + default n + config BSP_USING_HWTIMER2 + bool "using hwtimer2" + default n + config BSP_USING_HWTIMER3 + bool "using hwtimer3" + default n + config BSP_USING_HWTIMER4 + bool "using hwtimer4" + default n + config BSP_USING_HWTIMER5 + bool "using hwtimer5" + default n + config BSP_USING_HWTIMER6 + bool "using hwtimer6" + default n + config BSP_USING_HWTIMER7 + bool "using hwtimer7" + default n + endif endmenu diff --git a/bsp/gd32103c-eval/Libraries/CMSIS/GD/GD32F1xx/Include/gd32f10x.h b/bsp/gd32103c-eval/Libraries/CMSIS/GD/GD32F1xx/Include/gd32f10x.h index b54bd3601d..1dde2fb596 100644 --- a/bsp/gd32103c-eval/Libraries/CMSIS/GD/GD32F1xx/Include/gd32f10x.h +++ b/bsp/gd32103c-eval/Libraries/CMSIS/GD/GD32F1xx/Include/gd32f10x.h @@ -173,13 +173,13 @@ typedef enum IRQn { CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ - TIMER1_BRK_IRQn = 24, /*!< TIMER1 Break Interrupt */ - TIMER1_UP_IRQn = 25, /*!< TIMER1 Update Interrupt */ - TIMER1_TRG_COM_IRQn = 26, /*!< TIMER1 Trigger and Commutation Interrupt */ - TIMER1_CC_IRQn = 27, /*!< TIMER1 Capture Compare Interrupt */ - TIMER2_IRQn = 28, /*!< TIMER2 global Interrupt */ - TIMER3_IRQn = 29, /*!< TIMER3 global Interrupt */ - TIMER4_IRQn = 30, /*!< TIMER4 global Interrupt */ + TIMER0_BRK_IRQn = 24, /*!< TIMER0 Break Interrupt */ + TIMER0_UP_IRQn = 25, /*!< TIMER0 Update Interrupt */ + TIMER0_TRG_COM_IRQn = 26, /*!< TIMER0 Trigger and Commutation Interrupt */ + TIMER0_CC_IRQn = 27, /*!< TIMER0 Capture Compare Interrupt */ + TIMER1_IRQn = 28, /*!< TIMER1 global Interrupt */ + TIMER2_IRQn = 29, /*!< TIMER2 global Interrupt */ + TIMER3_IRQn = 30, /*!< TIMER3 global Interrupt */ I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ @@ -202,13 +202,13 @@ typedef enum IRQn { CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ - TIMER1_BRK_IRQn = 24, /*!< TIMER1 Break Interrupt */ - TIMER1_UP_IRQn = 25, /*!< TIMER1 Update Interrupt */ - TIMER1_TRG_COM_IRQn = 26, /*!< TIMER1 Trigger and Commutation Interrupt */ - TIMER1_CC_IRQn = 27, /*!< TIMER1 Capture Compare Interrupt */ - TIMER2_IRQn = 28, /*!< TIMER2 global Interrupt */ - TIMER3_IRQn = 29, /*!< TIMER3 global Interrupt */ - TIMER4_IRQn = 30, /*!< TIMER4 global Interrupt */ + TIMER0_BRK_IRQn = 24, /*!< TIMER0 Break Interrupt */ + TIMER0_UP_IRQn = 25, /*!< TIMER0 Update Interrupt */ + TIMER0_TRG_COM_IRQn = 26, /*!< TIMER0 Trigger and Commutation Interrupt */ + TIMER0_CC_IRQn = 27, /*!< TIMER0 Capture Compare Interrupt */ + TIMER1_IRQn = 28, /*!< TIMER1 global Interrupt */ + TIMER2_IRQn = 29, /*!< TIMER2 global Interrupt */ + TIMER3_IRQn = 30, /*!< TIMER3 global Interrupt */ I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ @@ -221,19 +221,19 @@ typedef enum IRQn { EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ USBWakeUp_IRQn = 42, /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */ - TIMER8_BRK_IRQn = 43, /*!< TIMER8 Break Interrupt */ - TIMER8_UP_IRQn = 44, /*!< TIMER8 Update Interrupt */ - TIMER8_TRG_COM_IRQn = 45, /*!< TIMER8 Trigger and Commutation Interrupt */ - TIMER8_CC_IRQn = 46, /*!< TIMER8 Capture Compare Interrupt */ + TIMER7_BRK_IRQn = 43, /*!< TIMER7 Break Interrupt */ + TIMER7_UP_IRQn = 44, /*!< TIMER7 Update Interrupt */ + TIMER7_TRG_COM_IRQn = 45, /*!< TIMER7 Trigger and Commutation Interrupt */ + TIMER7_CC_IRQn = 46, /*!< TIMER7 Capture Compare Interrupt */ ADC3_IRQn = 47, /*!< ADC3 global Interrupt */ EXMC_IRQn = 48, /*!< EXMC global Interrupt */ SDIO_IRQn = 49, /*!< SDIO global Interrupt */ - TIMER5_IRQn = 50, /*!< TIMER5 global Interrupt */ + TIMER4_IRQn = 50, /*!< TIMER4 global Interrupt */ SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ UART3_IRQn = 52, /*!< UART4 global Interrupt */ UART4_IRQn = 53, /*!< UART5 global Interrupt */ - TIMER6_IRQn = 54, /*!< TIMER6 global Interrupt */ - TIMER7_IRQn = 55, /*!< TIMER7 global Interrupt */ + TIMER5_IRQn = 54, /*!< TIMER5 global Interrupt */ + TIMER6_IRQn = 55, /*!< TIMER6 global Interrupt */ DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ @@ -247,13 +247,13 @@ typedef enum IRQn { CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ - TIMER1_BRK_TIMER9_IRQn = 24, /*!< TIMER1 Break Interrupt and TIMER9 global Interrupt */ - TIMER1_UP_TIMER10_IRQn = 25, /*!< TIMER1 Update Interrupt and TIMER10 global Interrupt */ - TIMER1_TRG_COM_TIMER11_IRQn = 26, /*!< TIMER1 Trigger and Commutation Interrupt and TIMER11 global interrupt */ - TIMER1_CC_IRQn = 27, /*!< TIMER1 Capture Compare Interrupt */ - TIMER2_IRQn = 28, /*!< TIMER2 global Interrupt */ - TIMER3_IRQn = 29, /*!< TIMER3 global Interrupt */ - TIMER4_IRQn = 30, /*!< TIMER4 global Interrupt */ + TIMER0_BRK_TIMER8_IRQn = 24, /*!< TIMER0 Break Interrupt and TIMER8 global Interrupt */ + TIMER0_UP_TIMER9_IRQn = 25, /*!< TIMER0 Update Interrupt and TIMER9 global Interrupt */ + TIMER0_TRG_COM_TIMER10_IRQn = 26, /*!< TIMER0 Trigger and Commutation Interrupt and TIMER10 global interrupt */ + TIMER0_CC_IRQn = 27, /*!< TIMER0 Capture Compare Interrupt */ + TIMER1_IRQn = 28, /*!< TIMER1 global Interrupt */ + TIMER2_IRQn = 29, /*!< TIMER2 global Interrupt */ + TIMER3_IRQn = 30, /*!< TIMER3 global Interrupt */ I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ @@ -266,19 +266,19 @@ typedef enum IRQn { EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ USBWakeUp_IRQn = 42, /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */ - TIMER8_BRK_TIMER12_IRQn = 43, /*!< TIMER8 Break Interrupt and TIMER12 global Interrupt */ - TIMER8_UP_TIMER13_IRQn = 44, /*!< TIMER8 Update Interrupt and TIMER13 global Interrupt */ - TIMER8_TRG_COM_TIMER14_IRQn = 45, /*!< TIMER8 Trigger and Commutation Interrupt and TIMER14 global interrupt */ - TIMER8_CC_IRQn = 46, /*!< TIMER8 Capture Compare Interrupt */ + TIMER7_BRK_TIMER11_IRQn = 43, /*!< TIMER7 Break Interrupt and TIMER11 global Interrupt */ + TIMER7_UP_TIMER12_IRQn = 44, /*!< TIMER7 Update Interrupt and TIMER12 global Interrupt */ + TIMER7_TRG_COM_TIMER13_IRQn = 45, /*!< TIMER7 Trigger and Commutation Interrupt and TIMER13 global interrupt */ + TIMER7_CC_IRQn = 46, /*!< TIMER7 Capture Compare Interrupt */ ADC3_IRQn = 47, /*!< ADC3 global Interrupt */ EXMC_IRQn = 48, /*!< EXMC global Interrupt */ SDIO_IRQn = 49, /*!< SDIO global Interrupt */ - TIMER5_IRQn = 50, /*!< TIMER5 global Interrupt */ + TIMER4_IRQn = 50, /*!< TIMER4 global Interrupt */ SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ UART4_IRQn = 52, /*!< UART4 global Interrupt */ UART5_IRQn = 53, /*!< UART5 global Interrupt */ - TIMER6_IRQn = 54, /*!< TIMER6 global Interrupt */ - TIMER7_IRQn = 55, /*!< TIMER7 global Interrupt */ + TIMER5_IRQn = 54, /*!< TIMER5 global Interrupt */ + TIMER6_IRQn = 55, /*!< TIMER6 global Interrupt */ DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ @@ -292,13 +292,13 @@ typedef enum IRQn { CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ - TIMER1_BRK_TIMER9_IRQn = 24, /*!< TIMER1 Break Interrupt and TIMER9 global Interrupt */ - TIMER1_UP_TIMER10_IRQn = 25, /*!< TIMER1 Update Interrupt and TIMER10 global Interrupt */ - TIMER1_TRG_COM_TIMER11_IRQn = 26, /*!< TIMER1 Trigger and Commutation Interrupt and TIMER11 global interrupt */ - TIMER1_CC_IRQn = 27, /*!< TIMER1 Capture Compare Interrupt */ - TIMER2_IRQn = 28, /*!< TIMER2 global Interrupt */ - TIMER3_IRQn = 29, /*!< TIMER3 global Interrupt */ - TIMER4_IRQn = 30, /*!< TIMER4 global Interrupt */ + TIMER0_BRK_TIMER8_IRQn = 24, /*!< TIMER0 Break Interrupt and TIMER8 global Interrupt */ + TIMER0_UP_TIMER9_IRQn = 25, /*!< TIMER0 Update Interrupt and TIMER9 global Interrupt */ + TIMER0_TRG_COM_TIMER10_IRQn = 26, /*!< TIMER0 Trigger and Commutation Interrupt and TIMER10 global interrupt */ + TIMER0_CC_IRQn = 27, /*!< TIMER0 Capture Compare Interrupt */ + TIMER1_IRQn = 28, /*!< TIMER1 global Interrupt */ + TIMER2_IRQn = 29, /*!< TIMER2 global Interrupt */ + TIMER3_IRQn = 30, /*!< TIMER3 global Interrupt */ I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ @@ -311,18 +311,18 @@ typedef enum IRQn { EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ RTCAlarm_IRQn = 41, /*!< RTC Alarm through EXTI Line Interrupt */ OTG_FS_WKUP_IRQn = 42, /*!< USB OTG FS WakeUp from suspend through EXTI Line Interrupt */ - TIMER8_BRK_TIMER12_IRQn = 43, /*!< TIMER8 Break Interrupt and TIMER12 global Interrupt */ - TIMER8_UP_TIMER13_IRQn = 44, /*!< TIMER8 Update Interrupt and TIMER13 global Interrupt */ - TIMER8_TRG_COM_TIMER14_IRQn = 45, /*!< TIMER8 Trigger and Commutation Interrupt and TIMER14 global interrupt */ - TIMER8_CC_IRQn = 46, /*!< TIMER8 Capture Compare Interrupt */ + TIMER7_BRK_TIMER11_IRQn = 43, /*!< TIMER7 Break Interrupt and TIMER11 global Interrupt */ + TIMER7_UP_TIMER12_IRQn = 44, /*!< TIMER7 Update Interrupt and TIMER12 global Interrupt */ + TIMER7_TRG_COM_TIMER13_IRQn = 45, /*!< TIMER7 Trigger and Commutation Interrupt and TIMER13 global interrupt */ + TIMER7_CC_IRQn = 46, /*!< TIMER7 Capture Compare Interrupt */ ADC3_IRQn = 47, /*!< ADC3 global Interrupt */ EXMC_IRQn = 48, /*!< EXMC global Interrupt */ - TIMER5_IRQn = 50, /*!< TIMER5 global Interrupt */ + TIMER4_IRQn = 50, /*!< TIMER4 global Interrupt */ SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ UART4_IRQn = 52, /*!< UART4 global Interrupt */ UART5_IRQn = 53, /*!< UART5 global Interrupt */ - TIMER6_IRQn = 54, /*!< TIMER6 global Interrupt */ - TIMER7_IRQn = 55, /*!< TIMER7 global Interrupt */ + TIMER5_IRQn = 54, /*!< TIMER5 global Interrupt */ + TIMER6_IRQn = 55, /*!< TIMER6 global Interrupt */ DMA2_Channel1_IRQn = 56, /*!< DMA2 Channel 1 global Interrupt */ DMA2_Channel2_IRQn = 57, /*!< DMA2 Channel 2 global Interrupt */ DMA2_Channel3_IRQn = 58, /*!< DMA2 Channel 3 global Interrupt */ @@ -1090,15 +1090,15 @@ typedef struct { #define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) #define AHBPERIPH_BASE (PERIPH_BASE + 0x20000) -#define TIMER2_BASE (APB1PERIPH_BASE + 0x0000) -#define TIMER3_BASE (APB1PERIPH_BASE + 0x0400) -#define TIMER4_BASE (APB1PERIPH_BASE + 0x0800) -#define TIMER5_BASE (APB1PERIPH_BASE + 0x0C00) -#define TIMER6_BASE (APB1PERIPH_BASE + 0x1000) -#define TIMER7_BASE (APB1PERIPH_BASE + 0x1400) -#define TIMER12_BASE (APB1PERIPH_BASE + 0x1800) -#define TIMER13_BASE (APB1PERIPH_BASE + 0x1C00) -#define TIMER14_BASE (APB1PERIPH_BASE + 0x2000) +#define TIMER1_BASE (APB1PERIPH_BASE + 0x0000) +#define TIMER2_BASE (APB1PERIPH_BASE + 0x0400) +#define TIMER3_BASE (APB1PERIPH_BASE + 0x0800) +#define TIMER4_BASE (APB1PERIPH_BASE + 0x0C00) +#define TIMER5_BASE (APB1PERIPH_BASE + 0x1000) +#define TIMER6_BASE (APB1PERIPH_BASE + 0x1400) +#define TIMER11_BASE (APB1PERIPH_BASE + 0x1800) +#define TIMER12_BASE (APB1PERIPH_BASE + 0x1C00) +#define TIMER13_BASE (APB1PERIPH_BASE + 0x2000) #define RTC_BASE (APB1PERIPH_BASE + 0x2800) #define WWDG_BASE (APB1PERIPH_BASE + 0x2C00) #define IWDG_BASE (APB1PERIPH_BASE + 0x3000) @@ -1126,17 +1126,17 @@ typedef struct { #define GPIOG_BASE (APB2PERIPH_BASE + 0x2000) #define ADC0_BASE (APB2PERIPH_BASE + 0x2400) #define ADC1_BASE (APB2PERIPH_BASE + 0x2800) -#define TIMER1_BASE (APB2PERIPH_BASE + 0x2C00) +#define TIMER0_BASE (APB2PERIPH_BASE + 0x2C00) #define SPI1_BASE (APB2PERIPH_BASE + 0x3000) -#define TIMER8_BASE (APB2PERIPH_BASE + 0x3400) +#define TIMER7_BASE (APB2PERIPH_BASE + 0x3400) #define USART0_BASE (APB2PERIPH_BASE + 0x3800) #define ADC3_BASE (APB2PERIPH_BASE + 0x3C00) -#define TIMER15_BASE (APB2PERIPH_BASE + 0x4000) -#define TIMER16_BASE (APB2PERIPH_BASE + 0x4400) -#define TIMER17_BASE (APB2PERIPH_BASE + 0x4800) -#define TIMER9_BASE (APB2PERIPH_BASE + 0x4C00) -#define TIMER10_BASE (APB2PERIPH_BASE + 0x5000) -#define TIMER11_BASE (APB2PERIPH_BASE + 0x5400) +#define TIMER14_BASE (APB2PERIPH_BASE + 0x4000) +#define TIMER15_BASE (APB2PERIPH_BASE + 0x4400) +#define TIMER16_BASE (APB2PERIPH_BASE + 0x4800) +#define TIMER8_BASE (APB2PERIPH_BASE + 0x4C00) +#define TIMER9_BASE (APB2PERIPH_BASE + 0x5000) +#define TIMER10_BASE (APB2PERIPH_BASE + 0x5400) #define SDIO_BASE (PERIPH_BASE + 0x18000) @@ -1183,15 +1183,15 @@ typedef struct { * @{ */ +#define TIMER1 ((TIMER_TypeDef *) TIMER1_BASE) #define TIMER2 ((TIMER_TypeDef *) TIMER2_BASE) #define TIMER3 ((TIMER_TypeDef *) TIMER3_BASE) #define TIMER4 ((TIMER_TypeDef *) TIMER4_BASE) #define TIMER5 ((TIMER_TypeDef *) TIMER5_BASE) #define TIMER6 ((TIMER_TypeDef *) TIMER6_BASE) -#define TIMER7 ((TIMER_TypeDef *) TIMER7_BASE) +#define TIMER11 ((TIMER_TypeDef *) TIMER11_BASE) #define TIMER12 ((TIMER_TypeDef *) TIMER12_BASE) #define TIMER13 ((TIMER_TypeDef *) TIMER13_BASE) -#define TIMER14 ((TIMER_TypeDef *) TIMER14_BASE) #define RTC ((RTC_TypeDef *) RTC_BASE) #define WWDG ((WWDG_TypeDef *) WWDG_BASE) #define IWDG ((IWDG_TypeDef *) IWDG_BASE) @@ -1220,18 +1220,18 @@ typedef struct { #define GPIOG ((GPIO_TypeDef *) GPIOG_BASE) #define ADC0 ((ADC_TypeDef *) ADC0_BASE) #define ADC1 ((ADC_TypeDef *) ADC1_BASE) -#define TIMER1 ((TIMER_TypeDef *) TIMER1_BASE) +#define TIMER0 ((TIMER_TypeDef *) TIMER0_BASE) #define SPI1 ((SPI_TypeDef *) SPI1_BASE) -#define TIMER8 ((TIMER_TypeDef *) TIMER8_BASE) +#define TIMER7 ((TIMER_TypeDef *) TIMER7_BASE) #define USART0 ((USART_TypeDef *) USART0_BASE) #define USART1 ((USART_TypeDef *) USART1_BASE) #define ADC3 ((ADC_TypeDef *) ADC3_BASE) +#define TIMER14 ((TIMER_TypeDef *) TIMER14_BASE) #define TIMER15 ((TIMER_TypeDef *) TIMER15_BASE) #define TIMER16 ((TIMER_TypeDef *) TIMER16_BASE) -#define TIMER17 ((TIMER_TypeDef *) TIMER17_BASE) +#define TIMER8 ((TIMER_TypeDef *) TIMER8_BASE) #define TIMER9 ((TIMER_TypeDef *) TIMER9_BASE) #define TIMER10 ((TIMER_TypeDef *) TIMER10_BASE) -#define TIMER11 ((TIMER_TypeDef *) TIMER11_BASE) #define SDIO ((SDIO_TypeDef *) SDIO_BASE) #define DMA1 ((DMA_TypeDef *) DMA1_BASE) #define DMA2 ((DMA_TypeDef *) DMA2_BASE) @@ -7050,26 +7050,26 @@ typedef struct { #define RCC_APB2RCR_PGRST ((uint32_t)0x00000100) /*!< GPIOF clock reset */ #define RCC_APB2RCR_ADC0RST ((uint32_t)0x00000200) /*!< ADC0 clock reset */ #define RCC_APB2RCR_ADC1RST ((uint32_t)0x00000400) /*!< ADC1 clock reset */ -#define RCC_APB2RCR_TIMER1RST ((uint32_t)0x00000800) /*!< TIMER1 clock reset */ +#define RCC_APB2RCR_TIMER0RST ((uint32_t)0x00000800) /*!< TIMER0 clock reset */ #define RCC_APB2RCR_SPI1RST ((uint32_t)0x00001000) /*!< SPI1 clock reset */ -#define RCC_APB2RCR_TIMER8RST ((uint32_t)0x00002000) /*!< TIMER8 clock reset */ +#define RCC_APB2RCR_TIMER7RST ((uint32_t)0x00002000) /*!< TIMER7 clock reset */ #define RCC_APB2RCR_USART0RST ((uint32_t)0x00004000) /*!< USART1 clock reset */ #define RCC_APB2RCR_ADC3RST ((uint32_t)0x00008000) /*!< ADC3 clock reset */ -#define RCC_APB2RCR_TIMER9RST ((uint32_t)0x00080000) /*!< TIMER9 clock reset */ -#define RCC_APB2RCR_TIMER10RST ((uint32_t)0x00100000) /*!< TIMER10 clock reset */ -#define RCC_APB2RCR_TIMER11RST ((uint32_t)0x00200000) /*!< TIMER11 clock reset */ +#define RCC_APB2RCR_TIMER8RST ((uint32_t)0x00080000) /*!< TIMER8 clock reset */ +#define RCC_APB2RCR_TIMER9RST ((uint32_t)0x00100000) /*!< TIMER9 clock reset */ +#define RCC_APB2RCR_TIMER10RST ((uint32_t)0x00200000) /*!< TIMER10 clock reset */ /***************** Bit definition for RCC_APB1RCR register *****************/ -#define RCC_APB1RCR_TIMER2RST ((uint32_t)0x00000001) /*!< TIMER2 clock reset */ -#define RCC_APB1RCR_TIMER3RST ((uint32_t)0x00000002) /*!< TIMER3 clock reset */ -#define RCC_APB1RCR_TIMER4RST ((uint32_t)0x00000004) /*!< TIMER4 clock reset */ -#define RCC_APB1RCR_TIMER5RST ((uint32_t)0x00000008) /*!< TIMER8 clock reset */ -#define RCC_APB1RCR_TIMER6RST ((uint32_t)0x00000010) /*!< TIMER6 clock reset */ -#define RCC_APB1RCR_TIMER7RST ((uint32_t)0x00000020) /*!< TIMER7 clock reset */ -#define RCC_APB1RCR_TIMER12RST ((uint32_t)0x00000040) /*!< TIMER12 clock reset */ -#define RCC_APB1RCR_TIMER13RST ((uint32_t)0x00000080) /*!< TIMER13 clock reset */ -#define RCC_APB1RCR_TIMER14RST ((uint32_t)0x00000100) /*!< TIMER14 clock reset */ +#define RCC_APB1RCR_TIMER1RST ((uint32_t)0x00000001) /*!< TIMER1 clock reset */ +#define RCC_APB1RCR_TIMER2RST ((uint32_t)0x00000002) /*!< TIMER2 clock reset */ +#define RCC_APB1RCR_TIMER3RST ((uint32_t)0x00000004) /*!< TIMER3 clock reset */ +#define RCC_APB1RCR_TIMER4RST ((uint32_t)0x00000008) /*!< TIMER7 clock reset */ +#define RCC_APB1RCR_TIMER5RST ((uint32_t)0x00000010) /*!< TIMER5 clock reset */ +#define RCC_APB1RCR_TIMER6RST ((uint32_t)0x00000020) /*!< TIMER6 clock reset */ +#define RCC_APB1RCR_TIMER11RST ((uint32_t)0x00000040) /*!< TIMER11 clock reset */ +#define RCC_APB1RCR_TIMER12RST ((uint32_t)0x00000080) /*!< TIMER12 clock reset */ +#define RCC_APB1RCR_TIMER13RST ((uint32_t)0x00000100) /*!< TIMER13 clock reset */ #define RCC_APB1RCR_WWDGRST ((uint32_t)0x00000800) /*!< Window Watchdog clock reset */ #define RCC_APB1RCR_SPI2RST ((uint32_t)0x00004000) /*!< SPI2 clock reset */ #define RCC_APB1RCR_SPI3RST ((uint32_t)0x00008000) /*!< SPI3 clock reset */ @@ -7115,26 +7115,26 @@ typedef struct { #define RCC_APB2CCR_PGEN ((uint32_t)0x00000100) /*!< GPIOF clock enable */ #define RCC_APB2CCR_ADC0EN ((uint32_t)0x00000200) /*!< ADC0 clock enable */ #define RCC_APB2CCR_ADC1EN ((uint32_t)0x00000400) /*!< ADC1 clock enable */ -#define RCC_APB2CCR_TIMER1EN ((uint32_t)0x00000800) /*!< TIMER1 clock enable */ +#define RCC_APB2CCR_TIMER0EN ((uint32_t)0x00000800) /*!< TIMER0 clock enable */ #define RCC_APB2CCR_SPI1EN ((uint32_t)0x00001000) /*!< SPI1 clock enable */ -#define RCC_APB2CCR_TIMER8EN ((uint32_t)0x00002000) /*!< TIMER8 clock enable */ +#define RCC_APB2CCR_TIMER7EN ((uint32_t)0x00002000) /*!< TIMER7 clock enable */ #define RCC_APB2CCR_USART1EN ((uint32_t)0x00004000) /*!< USART1 clock enable */ #define RCC_APB2CCR_ADC3EN ((uint32_t)0x00008000) /*!< ADC3 clock enable */ -#define RCC_APB2CCR_TIMER9EN ((uint32_t)0x00080000) /*!< TIMER9 clock enable */ -#define RCC_APB2CCR_TIMER10EN ((uint32_t)0x00100000) /*!< TIMER10 clock enable */ -#define RCC_APB2CCR_TIMER11EN ((uint32_t)0x00200000) /*!< TIMER11 clock enable */ +#define RCC_APB2CCR_TIMER8EN ((uint32_t)0x00080000) /*!< TIMER8 clock enable */ +#define RCC_APB2CCR_TIMER9EN ((uint32_t)0x00100000) /*!< TIMER9 clock enable */ +#define RCC_APB2CCR_TIMER10EN ((uint32_t)0x00200000) /*!< TIMER10 clock enable */ /***************** Bit definition for RCC_APB1CCR register ******************/ -#define RCC_APB1CCR_TIMER2EN ((uint32_t)0x00000001) /*!< TIMER2 clock enable */ -#define RCC_APB1CCR_TIMER3EN ((uint32_t)0x00000002) /*!< TIMER3 clock enable */ -#define RCC_APB1CCR_TIMER4EN ((uint32_t)0x00000004) /*!< TIMER4 clock enable */ -#define RCC_APB1CCR_TIMER5EN ((uint32_t)0x00000008) /*!< TIMER8 clock enable */ -#define RCC_APB1CCR_TIMER6EN ((uint32_t)0x00000010) /*!< TIMER6 clock enable */ -#define RCC_APB1CCR_TIMER7EN ((uint32_t)0x00000020) /*!< TIMER7 clock enable */ -#define RCC_APB1CCR_TIMER12EN ((uint32_t)0x00000040) /*!< TIMER12 clock enable */ -#define RCC_APB1CCR_TIMER13EN ((uint32_t)0x00000080) /*!< TIMER13 clock enable */ -#define RCC_APB1CCR_TIMER14EN ((uint32_t)0x00000100) /*!< TIMER14 clock enable */ +#define RCC_APB1CCR_TIMER1EN ((uint32_t)0x00000001) /*!< TIMER1 clock enable */ +#define RCC_APB1CCR_TIMER2EN ((uint32_t)0x00000002) /*!< TIMER2 clock enable */ +#define RCC_APB1CCR_TIMER3EN ((uint32_t)0x00000004) /*!< TIMER3 clock enable */ +#define RCC_APB1CCR_TIMER4EN ((uint32_t)0x00000008) /*!< TIMER7 clock enable */ +#define RCC_APB1CCR_TIMER5EN ((uint32_t)0x00000010) /*!< TIMER5 clock enable */ +#define RCC_APB1CCR_TIMER6EN ((uint32_t)0x00000020) /*!< TIMER6 clock enable */ +#define RCC_APB1CCR_TIMER11EN ((uint32_t)0x00000040) /*!< TIMER11 clock enable */ +#define RCC_APB1CCR_TIMER12EN ((uint32_t)0x00000080) /*!< TIMER12 clock enable */ +#define RCC_APB1CCR_TIMER13EN ((uint32_t)0x00000100) /*!< TIMER13 clock enable */ #define RCC_APB1CCR_WWDGEN ((uint32_t)0x00000800) /*!< Window Watchdog clock enable */ #define RCC_APB1CCR_SPI2EN ((uint32_t)0x00004000) /*!< SPI2 clock enable */ #define RCC_APB1CCR_SPI3EN ((uint32_t)0x00008000) /*!< SPI3 clock enable*/ diff --git a/bsp/gd32103c-eval/Libraries/GD32F1xx_standard_peripheral/Include/gd32f10x_rcc.h b/bsp/gd32103c-eval/Libraries/GD32F1xx_standard_peripheral/Include/gd32f10x_rcc.h index 207b365572..9772751542 100644 --- a/bsp/gd32103c-eval/Libraries/GD32F1xx_standard_peripheral/Include/gd32f10x_rcc.h +++ b/bsp/gd32103c-eval/Libraries/GD32F1xx_standard_peripheral/Include/gd32f10x_rcc.h @@ -455,14 +455,14 @@ typedef struct { #define RCC_APB2PERIPH_GPIOG RCC_APB2CCR_PGEN #define RCC_APB2PERIPH_ADC0 RCC_APB2CCR_ADC0EN #define RCC_APB2PERIPH_ADC1 RCC_APB2CCR_ADC1EN -#define RCC_APB2PERIPH_TIMER1 RCC_APB2CCR_TIMER1EN +#define RCC_APB2PERIPH_TIMER0 RCC_APB2CCR_TIMER0EN #define RCC_APB2PERIPH_SPI1 RCC_APB2CCR_SPI1EN -#define RCC_APB2PERIPH_TIMER8 RCC_APB2CCR_TIMER8EN +#define RCC_APB2PERIPH_TIMER7 RCC_APB2CCR_TIMER7EN #define RCC_APB2PERIPH_USART1 RCC_APB2CCR_USART1EN #define RCC_APB2PERIPH_ADC2 RCC_APB2CCR_ADC2EN -#define RCC_APB2PERIPH_TIMER9 RCC_APB2CCR_TIMER9EN +#define RCC_APB2PERIPH_TIMER8 RCC_APB2CCR_TIMER8EN +#define RCC_APB2PERIPH_TIMER9 RCC_APB2CCR_TIMER9EN #define RCC_APB2PERIPH_TIMER10 RCC_APB2CCR_TIMER10EN -#define RCC_APB2PERIPH_TIMER11 RCC_APB2CCR_TIMER11EN /** * @} @@ -481,14 +481,14 @@ typedef struct { #define RCC_APB2PERIPH_GPIOGRST RCC_APB2RCR_PGRST #define RCC_APB2PERIPH_ADC0RST RCC_APB2RCR_ADC0RST #define RCC_APB2PERIPH_ADC1RST RCC_APB2RCR_ADC1RST -#define RCC_APB2PERIPH_TIMER1RST RCC_APB2RCR_TIMER1RST +#define RCC_APB2PERIPH_TIMER0RST RCC_APB2RCR_TIMER0RST #define RCC_APB2PERIPH_SPI1RST RCC_APB2RCR_SPI1RST -#define RCC_APB2PERIPH_TIMER8RST RCC_APB2RCR_TIMER8RST +#define RCC_APB2PERIPH_TIMER7RST RCC_APB2RCR_TIMER7RST #define RCC_APB2PERIPH_USART0RST RCC_APB2RCR_USART0RST #define RCC_APB2PERIPH_ADC2RST RCC_APB2RCR_ADC2RST +#define RCC_APB2PERIPH_TIMER8RST RCC_APB2RCR_TIMER8RST #define RCC_APB2PERIPH_TIMER9RST RCC_APB2RCR_TIMER9RST #define RCC_APB2PERIPH_TIMER10RST RCC_APB2RCR_TIMER10RST -#define RCC_APB2PERIPH_TIMER11RST RCC_APB2RCR_TIMER11RST /** * @} @@ -497,15 +497,15 @@ typedef struct { /** @defgroup RCC_APB1_peripheral * @{ */ +#define RCC_APB1PERIPH_TIMER1 RCC_APB1CCR_TIMER1EN #define RCC_APB1PERIPH_TIMER2 RCC_APB1CCR_TIMER2EN #define RCC_APB1PERIPH_TIMER3 RCC_APB1CCR_TIMER3EN #define RCC_APB1PERIPH_TIMER4 RCC_APB1CCR_TIMER4EN #define RCC_APB1PERIPH_TIMER5 RCC_APB1CCR_TIMER5EN #define RCC_APB1PERIPH_TIMER6 RCC_APB1CCR_TIMER6EN -#define RCC_APB1PERIPH_TIMER7 RCC_APB1CCR_TIMER7EN +#define RCC_APB1PERIPH_TIMER11 RCC_APB1CCR_TIMER11EN #define RCC_APB1PERIPH_TIMER12 RCC_APB1CCR_TIMER12EN #define RCC_APB1PERIPH_TIMER13 RCC_APB1CCR_TIMER13EN -#define RCC_APB1PERIPH_TIMER14 RCC_APB1CCR_TIMER14EN #define RCC_APB1PERIPH_WWDG RCC_APB1CCR_WWDGEN #define RCC_APB1PERIPH_SPI2 RCC_APB1CCR_SPI2EN #define RCC_APB1PERIPH_SPI3 RCC_APB1CCR_SPI3EN @@ -529,15 +529,15 @@ typedef struct { /** @defgroup RCC_APB1_Peripherals_RST * @{ */ +#define RCC_APB1PERIPH_TIMER1RST RCC_APB1RCR_TIMER1RST #define RCC_APB1PERIPH_TIMER2RST RCC_APB1RCR_TIMER2RST #define RCC_APB1PERIPH_TIMER3RST RCC_APB1RCR_TIMER3RST #define RCC_APB1PERIPH_TIMER4RST RCC_APB1RCR_TIMER4RST #define RCC_APB1PERIPH_TIMER5RST RCC_APB1RCR_TIMER5RST #define RCC_APB1PERIPH_TIMER6RST RCC_APB1RCR_TIMER6RST -#define RCC_APB1PERIPH_TIMER7RST RCC_APB1RCR_TIMER7RST +#define RCC_APB1PERIPH_TIMER11RST RCC_APB1RCR_TIMER11RST #define RCC_APB1PERIPH_TIMER12RST RCC_APB1RCR_TIMER12RST #define RCC_APB1PERIPH_TIMER13RST RCC_APB1RCR_TIMER13RST -#define RCC_APB1PERIPH_TIMER14RST RCC_APB1RCR_TIMER14RST #define RCC_APB1PERIPH_WWDGRST RCC_APB1RCR_WWDGRST #define RCC_APB1PERIPH_SPI2RST RCC_APB1RCR_SPI2RST #define RCC_APB1PERIPH_SPI3RST RCC_APB1RCR_SPI3RST diff --git a/bsp/gd32103c-eval/Libraries/GD32F1xx_standard_peripheral/Source/gd32f10x_timer.c b/bsp/gd32103c-eval/Libraries/GD32F1xx_standard_peripheral/Source/gd32f10x_timer.c index b24274fa49..d5fd7fdf74 100644 --- a/bsp/gd32103c-eval/Libraries/GD32F1xx_standard_peripheral/Source/gd32f10x_timer.c +++ b/bsp/gd32103c-eval/Libraries/GD32F1xx_standard_peripheral/Source/gd32f10x_timer.c @@ -45,14 +45,17 @@ static void TI4_Config(TIMER_TypeDef *TIMERx, uint16_t TIMER_ICPolarity, uint16_ /** * @brief Deinitialize the TIMER . - * @param TIMERx: x ={ 1-14 } . + * @param TIMERx: x ={ 0-13 } . * @retval None */ void TIMER_DeInit(TIMER_TypeDef *TIMERx) { - if (TIMERx == TIMER1) { - RCC->APB2RCR |= RCC_APB2PERIPH_TIMER1RST; - RCC->APB2RCR &= ~RCC_APB2PERIPH_TIMER1; + if (TIMERx == TIMER0) { + RCC->APB2RCR |= RCC_APB2PERIPH_TIMER0RST; + RCC->APB2RCR &= ~RCC_APB2PERIPH_TIMER0; + } else if (TIMERx == TIMER1) { + RCC->APB1RCR |= RCC_APB1PERIPH_TIMER1RST; + RCC->APB1RCR &= ~RCC_APB1PERIPH_TIMER1; } else if (TIMERx == TIMER2) { RCC->APB1RCR |= RCC_APB1PERIPH_TIMER2RST; RCC->APB1RCR &= ~RCC_APB1PERIPH_TIMER2; @@ -69,8 +72,8 @@ void TIMER_DeInit(TIMER_TypeDef *TIMERx) RCC->APB1RCR |= RCC_APB1PERIPH_TIMER6RST; RCC->APB1RCR &= ~RCC_APB1PERIPH_TIMER6; } else if (TIMERx == TIMER7) { - RCC->APB1RCR |= RCC_APB1PERIPH_TIMER7RST; - RCC->APB1RCR &= ~RCC_APB1PERIPH_TIMER7; + RCC->APB2RCR |= RCC_APB2PERIPH_TIMER7RST; + RCC->APB2RCR &= ~RCC_APB2PERIPH_TIMER7; } else if (TIMERx == TIMER8) { RCC->APB2RCR |= RCC_APB2PERIPH_TIMER8RST; RCC->APB2RCR &= ~RCC_APB2PERIPH_TIMER8; @@ -81,23 +84,20 @@ void TIMER_DeInit(TIMER_TypeDef *TIMERx) RCC->APB2RCR |= RCC_APB2PERIPH_TIMER10RST; RCC->APB2RCR &= ~RCC_APB2PERIPH_TIMER10; } else if (TIMERx == TIMER11) { - RCC->APB2RCR |= RCC_APB2PERIPH_TIMER11RST; - RCC->APB2RCR &= ~RCC_APB2PERIPH_TIMER11; + RCC->APB1RCR |= RCC_APB1PERIPH_TIMER11RST; + RCC->APB1RCR &= ~RCC_APB1PERIPH_TIMER11; } else if (TIMERx == TIMER12) { RCC->APB1RCR |= RCC_APB1PERIPH_TIMER12RST; RCC->APB1RCR &= ~RCC_APB1PERIPH_TIMER12; } else if (TIMERx == TIMER13) { RCC->APB1RCR |= RCC_APB1PERIPH_TIMER13RST; RCC->APB1RCR &= ~RCC_APB1PERIPH_TIMER13; - } else if (TIMERx == TIMER14) { - RCC->APB1RCR |= RCC_APB1PERIPH_TIMER14RST; - RCC->APB1RCR &= ~RCC_APB1PERIPH_TIMER14; } } /** * @brief Initialize the specified Timer - * @param TIMERx: x ={ 1 -14 } . + * @param TIMERx: x ={ 0 -13 } . * @param TIMER_Init: pointer to a TIMER_BaseInitPara structure. * @retval None */ @@ -107,15 +107,15 @@ void TIMER_BaseInit(TIMER_TypeDef *TIMERx, TIMER_BaseInitPara *TIMER_Init) tmpctlr1 = TIMERx->CTLR1; - if ((TIMERx == TIMER1) || (TIMERx == TIMER8) || (TIMERx == TIMER2) || (TIMERx == TIMER3) || - (TIMERx == TIMER4) || (TIMERx == TIMER5) || (TIMERx == TIMER9) || (TIMERx == TIMER10) - || (TIMERx == TIMER11) || (TIMERx == TIMER12) || (TIMERx == TIMER13) || (TIMERx == TIMER14)) { + if ((TIMERx == TIMER0) || (TIMERx == TIMER7) || (TIMERx == TIMER1) || (TIMERx == TIMER2) || + (TIMERx == TIMER3) || (TIMERx == TIMER4) || (TIMERx == TIMER8) || (TIMERx == TIMER9) + || (TIMERx == TIMER10) || (TIMERx == TIMER11) || (TIMERx == TIMER12) || (TIMERx == TIMER13)) { /* Configure the Counter Mode */ tmpctlr1 &= (uint16_t)(~((uint16_t)(TIMER_CTLR1_DIR | TIMER_CTLR1_CAM))); tmpctlr1 |= (uint32_t)TIMER_Init->TIMER_CounterMode; } - if ((TIMERx != TIMER6) && (TIMERx != TIMER7)) { + if ((TIMERx != TIMER5) && (TIMERx != TIMER6)) { /* Configure the clock division */ tmpctlr1 &= (uint16_t)(~((uint16_t)TIMER_CTLR1_CDIV)); tmpctlr1 |= (uint32_t)TIMER_Init->TIMER_ClockDivision; @@ -129,8 +129,8 @@ void TIMER_BaseInit(TIMER_TypeDef *TIMERx, TIMER_BaseInitPara *TIMER_Init) /* Configure the Prescaler value */ TIMERx->PSC = TIMER_Init->TIMER_Prescaler; - if ((TIMERx == TIMER1) || - (TIMERx == TIMER8)) { + if ((TIMERx == TIMER0) || + (TIMERx == TIMER7)) { /* Configure the Repetition Counter value */ TIMERx->CREP = TIMER_Init->TIMER_RepetitionCounter; } @@ -156,7 +156,7 @@ void TIMER_BaseStructInit(TIMER_BaseInitPara *TIMER_Init) /** * @brief Configure the TIMER Prescaler. - * @param TIMERx: x ={ 1-14 } + * @param TIMERx: x ={ 0-13 } * @param Prescaler: Prescaler value * @param TIMER_PSCReloadMode: Prescaler Reload mode * This value will be : @@ -203,7 +203,7 @@ void TIMER_CounterMode(TIMER_TypeDef *TIMERx, uint16_t TIMER_CounterMode) /** * @brief Configure the TIMER Counter Register value - * @param TIMERx: x ={ 1-14 } . + * @param TIMERx: x ={ 0-13 } . * @param Counter: the Counter register new value. * @retval None */ @@ -214,7 +214,7 @@ void TIMER_SetCounter(TIMER_TypeDef *TIMERx, uint32_t Counter) /** * @brief Configure the Autoreload value - * @param TIMERx: x ={ 1-14 } . + * @param TIMERx: x ={ 0-13 } . * @param AutoReloadValue: * @retval None */ @@ -225,7 +225,7 @@ void TIMER_SetAutoreload(TIMER_TypeDef *TIMERx, uint32_t AutoReloadValue) /** * @brief Get the Counter value. - * @param TIMERx: x ={ 1-14 } . + * @param TIMERx: x ={ 0-13 } . * @retval Counter Register value. */ uint32_t TIMER_GetCounter(TIMER_TypeDef *TIMERx) @@ -235,7 +235,7 @@ uint32_t TIMER_GetCounter(TIMER_TypeDef *TIMERx) /** * @brief Get the Prescaler value. - * @param TIMERx: x ={ 1-14 } . + * @param TIMERx: x ={ 0-13 } . * @retval Prescaler Register value */ uint16_t TIMER_GetPrescaler(TIMER_TypeDef *TIMERx) @@ -245,7 +245,7 @@ uint16_t TIMER_GetPrescaler(TIMER_TypeDef *TIMERx) /** * @brief Configure the TIMERx Update event. - * @param TIMERx: x ={ 1-14 } . + * @param TIMERx: x ={ 0-13 } . * @param NewValue: new value of the TIMERx UPDIS bit * This value will be : * @arg ENABLE : Update Enbale @@ -263,7 +263,7 @@ void TIMER_UpdateDisableConfig(TIMER_TypeDef *TIMERx, TypeState NewValue) /** * @brief Configure the TIMER Update Request source. - * @param TIMERx: x ={ 1-14 } . + * @param TIMERx: x ={ 0-13 } . * @param TIMER_UpdateSrc: Configures the Update source. * This value will be : * @arg TIMER_UPDATE_SRC_GLOBAL : Update generate by setting of UPG bit or the counter @@ -282,7 +282,7 @@ void TIMER_UpdateRequestConfig(TIMER_TypeDef *TIMERx, uint16_t TIMER_UpdateSrc) /** * @brief Configure the CARL Preload function - * @param TIMERx: x ={ 1-14 } . + * @param TIMERx: x ={ 0-13 } . * @param NewValue: the state of the Preload function on CARL. * This value will be : * @arg ENABLE @@ -339,7 +339,7 @@ void TIMER_SetClockDivision(TIMER_TypeDef *TIMERx, uint16_t TIMER_CDIV) /** * @brief ENABLE or DISABLE the TIMER. - * @param TIMERx: x ={ 1-14 } . + * @param TIMERx: x ={ 0-13 } . * @param NewValue: ENABLE or DISABLE. * @retval None */ @@ -443,7 +443,7 @@ void TIMER_OC1_Init(TIMER_TypeDef *TIMERx, TIMER_OCInitPara *TIMER_OCInit) /* Set the Output State */ tmpche |= TIMER_OCInit->TIMER_OutputState; - if ((TIMERx == TIMER1) || (TIMERx == TIMER8)) { + if ((TIMERx == TIMER0) || (TIMERx == TIMER7)) { /* Reset the Output complementary Polarity */ tmpche &= (uint16_t)(~((uint16_t)TIMER_CHE_CH1NP)); @@ -518,7 +518,7 @@ void TIMER_OC2_Init(TIMER_TypeDef *TIMERx, TIMER_OCInitPara *TIMER_OCInit) /* Set the Output State */ tmpche |= (uint16_t)(TIMER_OCInit->TIMER_OutputState << 4); - if ((TIMERx == TIMER1) || (TIMERx == TIMER8)) { + if ((TIMERx == TIMER0) || (TIMERx == TIMER7)) { /* Reset the Output complementary Polarity */ tmpche &= (uint16_t)(~((uint16_t)TIMER_CHE_CH2NP)); @@ -593,7 +593,7 @@ void TIMER_OC3_Init(TIMER_TypeDef *TIMERx, TIMER_OCInitPara *TIMER_OCInit) /* Set the Output State */ tmpche |= (uint16_t)(TIMER_OCInit->TIMER_OutputState << 8); - if ((TIMERx == TIMER1) || (TIMERx == TIMER8)) { + if ((TIMERx == TIMER0) || (TIMERx == TIMER7)) { /* Reset the Output complementary Polarity */ tmpche &= (uint16_t)(~((uint16_t)TIMER_CHE_CH3NP)); @@ -667,7 +667,7 @@ void TIMER_OC4_Init(TIMER_TypeDef *TIMERx, TIMER_OCInitPara *TIMER_OCInit) /* Set the Output State */ tmpche |= (uint16_t)(TIMER_OCInit->TIMER_OutputState << 12); - if ((TIMERx == TIMER1) || (TIMERx == TIMER8)) { + if ((TIMERx == TIMER0) || (TIMERx == TIMER7)) { /* Reset the Ouput Compare IDLE State */ tmpctlr2 &= (uint16_t)(~((uint16_t)TIMER_CTLR2_ISO4)); @@ -1646,7 +1646,7 @@ void TIMER_Set_IC4_Prescaler(TIMER_TypeDef *TIMERx, uint16_t TIMER_ICPSC) /** * @brief Configure interrupts Enables - * @param TIMERx: x ={ 1-14 } . + * @param TIMERx: x ={ 0-13 } . * @param TIMER_INT: the interrupts sources to Configure. * This value will be : * @arg TIMER_INT_UPDATE : update Interrupt @@ -1671,7 +1671,7 @@ void TIMER_INTConfig(TIMER_TypeDef *TIMERx, uint16_t TIMER_INT, TypeState NewVal /** * @brief Generate the software event - * @param TIMERx: x ={ 1-14 } . + * @param TIMERx: x ={ 0-13 } . * @param TIMER_EventSrc: * This value will be : * @arg TIMER_EVENT_SRC_UPDATE : update Event @@ -1691,7 +1691,7 @@ void TIMER_GenerateEvent(TIMER_TypeDef *TIMERx, uint16_t TIMER_EventSrc) /** * @brief Get current flag status - * @param TIMERx: x ={ 1-14 } . + * @param TIMERx: x ={ 0-13 } . * @param TIMER_FLAG: * This value will be : * @arg TIMER_FLAG_UPDATE : update Flag @@ -1719,7 +1719,7 @@ TypeState TIMER_GetBitState(TIMER_TypeDef *TIMERx, uint16_t TIMER_FLAG) /** * @brief Clear the flags - * @param TIMERx: x ={ 1-14 } . + * @param TIMERx: x ={ 0-13 } . * @param TIMER_FLAG: the flag bit to clear. * This value will be : * @arg TIMER_FLAG_UPDATE : update Flag @@ -1743,7 +1743,7 @@ void TIMER_ClearBitState(TIMER_TypeDef *TIMERx, uint16_t TIMER_FLAG) /** * @brief Get interrupt state - * @param TIMERx: x ={ 1-14 } . + * @param TIMERx: x ={ 0-13 } . * @param TIMER_INT: * This value will be : * @arg TIMER_INT_UPDATE: update Interrupt @@ -1772,7 +1772,7 @@ TypeState TIMER_GetIntBitState(TIMER_TypeDef *TIMERx, uint16_t TIMER_INT) /** * @brief Clear the interrupt pending bits - * @param TIMERx: x ={ 1-14 } . + * @param TIMERx: x ={ 0-13 } . * @param TIMER_INT: * This value will be : * @arg TIMER_INT_UPDATE: update Interrupt diff --git a/bsp/gd32103c-eval/README.md b/bsp/gd32103c-eval/README.md index 20a0d2c55c..1f3c3d3425 100644 --- a/bsp/gd32103c-eval/README.md +++ b/bsp/gd32103c-eval/README.md @@ -47,6 +47,7 @@ msh /> | UART | 支持 | UART0~4 | | GPIO | 支持 | GPIOA~G | | ADC | 支持 | ADC0~1 | +| HWTIMER | 支持 | TIMER0~7 | | IIC | 未支持 | I2C0~1 | | SPI | 未支持 | SPI0~2 | | ETH | 未支持 | | diff --git a/bsp/gd32103c-eval/drivers/SConscript b/bsp/gd32103c-eval/drivers/SConscript index 374218f0ab..35734e9d10 100644 --- a/bsp/gd32103c-eval/drivers/SConscript +++ b/bsp/gd32103c-eval/drivers/SConscript @@ -21,6 +21,9 @@ if GetDepend('RT_USING_PIN'): if GetDepend('RT_USING_ADC'): src += ['drv_adc.c'] +if GetDepend('RT_USING_HWTIMER'): + src += ['drv_hwtimer.c'] + group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) Return('group') diff --git a/bsp/gd32103c-eval/drivers/drv_comm.h b/bsp/gd32103c-eval/drivers/drv_comm.h new file mode 100644 index 0000000000..5aef53cce2 --- /dev/null +++ b/bsp/gd32103c-eval/drivers/drv_comm.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-01-28 iysheng first version + */ + +#ifndef __DRV_COMM_H__ +#define __DRV_COMM_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef ARRAY_SIZE +#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __DRV_HWTIMER_H__ */ + diff --git a/bsp/gd32103c-eval/drivers/drv_hwtimer.c b/bsp/gd32103c-eval/drivers/drv_hwtimer.c new file mode 100644 index 0000000000..8b5f5010e6 --- /dev/null +++ b/bsp/gd32103c-eval/drivers/drv_hwtimer.c @@ -0,0 +1,540 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-01-28 iysheng first version + */ + +#include +#include +#include + +#ifdef BSP_USING_HWTIMER + +enum timer_index_E { +#ifdef BSP_USING_HWTIMER0 + TIM0_INDEX, +#endif +#ifdef BSP_USING_HWTIMER1 + TIM1_INDEX, +#endif +#ifdef BSP_USING_HWTIMER2 + TIM2_INDEX, +#endif +#ifdef BSP_USING_HWTIMER3 + TIM3_INDEX, +#endif +#ifdef BSP_USING_HWTIMER4 + TIM4_INDEX, +#endif +#ifdef BSP_USING_HWTIMER5 + TIM5_INDEX, +#endif +#ifdef BSP_USING_HWTIMER6 + TIM6_INDEX, +#endif +#ifdef BSP_USING_HWTIMER7 + TIM7_INDEX, +#endif +#ifdef BSP_USING_HWTIMER8 + TIM8_INDEX, +#endif +#ifdef BSP_USING_HWTIMER9 + TIM9_INDEX, +#endif +#ifdef BSP_USING_HWTIMER10 + TIM10_INDEX, +#endif +#ifdef BSP_USING_HWTIMER11 + TIM11_INDEX, +#endif +#ifdef BSP_USING_HWTIMER12 + TIM12_INDEX, +#endif +#ifdef BSP_USING_HWTIMER13 + TIM13_INDEX, +#endif +}; + +/* + * static void __set_timerx_freq + * Set freq with timerx + * + * @param timerx the pointer of TIMER_TypeDef + * @param freq of the timer clock + * @retval None + */ +static void __set_timerx_freq(TIMER_TypeDef *timerx, uint32_t freq) +{ + RCC_ClocksPara RCC_Clocks = {0}; + uint16_t prescaler; + uint32_t temp; + + RCC_GetClocksFreq(&RCC_Clocks); + if (timerx == TIMER0 || timerx == TIMER7 || timerx == TIMER8 \ + || timerx == TIMER9 || timerx == TIMER10) + { + temp = RCC->GCFGR & RCC_GCFGR_APB2PS; + temp >>= 11; + /* whether should frequency doubling */ + temp = (temp < 4) ? 0 : 1; + + prescaler = (RCC_Clocks.APB2_Frequency << temp) / freq - 1; + } + else + { + temp = RCC->GCFGR & RCC_GCFGR_APB1PS; + temp >>= 8; + /* whether should frequency doubling */ + temp = (temp < 4) ? 0 : 1; + + prescaler = (RCC_Clocks.APB1_Frequency << temp) / freq - 1; + } + + TIMER_PrescalerConfig(timerx, prescaler, TIMER_PSC_RELOAD_NOW); +} + +static void gd32_hwtimer_init(struct rt_hwtimer_device *timer, rt_uint32_t state) +{ + TIMER_TypeDef * timer_base = timer->parent.user_data; + TIMER_BaseInitPara TIMER_Init; + + RT_ASSERT(timer_base); + + if (state) + { + TIMER_InternalClockConfig(timer_base); + TIMER_BaseStructInit(&TIMER_Init); + TIMER_Init.TIMER_Period = timer->info->maxcnt; + TIMER_BaseInit(timer_base, &TIMER_Init); + __set_timerx_freq(timer_base, timer->info->maxfreq); + } +} + +static rt_err_t gd32_hwtimer_start(struct rt_hwtimer_device *timer, \ + rt_uint32_t cnt, rt_hwtimer_mode_t mode) +{ + TIMER_TypeDef * timer_base = timer->parent.user_data; + + if (mode == HWTIMER_MODE_ONESHOT) + { + TIMER_SinglePulseMode(timer_base, TIMER_SP_MODE_SINGLE); + } + else if (mode == HWTIMER_MODE_PERIOD) + { + TIMER_SinglePulseMode(timer_base, TIMER_SP_MODE_REPETITIVE); + } + + TIMER_SetCounter(timer_base, 0); + TIMER_SetAutoreload(timer_base, cnt - 1); + TIMER_Enable(timer_base, ENABLE); + + return 0; +} + +static void gd32_hwtimer_stop(struct rt_hwtimer_device *timer) +{ + TIMER_TypeDef * timer_base = timer->parent.user_data; + + TIMER_Enable(timer_base, DISABLE); +} + +static rt_uint32_t gd32_hwtimer_count_get(struct rt_hwtimer_device *timer) +{ + TIMER_TypeDef * timer_base = timer->parent.user_data; + rt_uint32_t count; + + count = TIMER_GetCounter(timer_base); + + return count; +} + +static rt_err_t gd32_hwtimer_control(struct rt_hwtimer_device *timer, rt_uint32_t cmd, \ + void *args) +{ + int ret = RT_EOK; + rt_int32_t freq; + rt_hwtimer_mode_t mode; + + switch (cmd) + { + case HWTIMER_CTRL_FREQ_SET: + freq = *(rt_uint32_t *)args; + __set_timerx_freq(timer->parent.user_data, freq); + break; + default: + rt_kprintf("invalid cmd:%x\n", cmd); + ret = -EINVAL; + break; + } + + return ret; +} + +static const struct rt_hwtimer_ops g_gd32_hwtimer_ops = { + gd32_hwtimer_init, + gd32_hwtimer_start, + gd32_hwtimer_stop, + gd32_hwtimer_count_get, + gd32_hwtimer_control, +}; + +static gd32_hwtimer_device g_gd32_hwtimer[] = { +#ifdef BSP_USING_HWTIMER0 + { + "timer0", + { + TIMER0, + TIMER0_UP_IRQn, + RCU_TIMER0, + }, + {0}, + { + 1000000, + 1000, + 0xffff, + 0, /* count up mode */ + } + }, +#endif +#ifdef BSP_USING_HWTIMER1 + { + "timer1", + { + TIMER1, + TIMER1_IRQn, + RCU_TIMER1, + }, + {0}, + { + 1000000, + 1000, + 0xffff, + 0, /* count up mode */ + } + }, +#endif +#ifdef BSP_USING_HWTIMER2 + { + "timer2", + { + TIMER2, + TIMER2_IRQn, + RCU_TIMER2, + }, + {0}, + { + 1000000, + 1000, + 0xffff, + 0, /* count up mode */ + } + }, +#endif +#ifdef BSP_USING_HWTIMER3 + { + "timer3", + { + TIMER3, + TIMER3_IRQn, + RCU_TIMER3, + }, + {0}, + { + 1000000, + 1000, + 0xffff, + 0, /* count up mode */ + } + }, +#endif +#ifdef BSP_USING_HWTIMER4 + { + "timer4", + { + TIMER4, + TIMER4_IRQn, + RCU_TIMER4, + }, + {0}, + { + 1000000, + 1000, + 0xffff, + 0, /* count up mode */ + } + }, +#endif +#ifdef BSP_USING_HWTIMER5 + { + "timer5", + { + TIMER5, + TIMER5_IRQn, + RCU_TIMER5, + }, + {0}, + { + 1000000, + 1000, + 0xffff, + 0, /* count up mode */ + } + }, +#endif +#ifdef BSP_USING_HWTIMER6 + { + "timer6", + { + TIMER6, + TIMER6_IRQn, + RCU_TIMER6, + }, + {0}, + { + 1000000, + 1000, + 0xffff, + 0, /* count up mode */ + } + }, +#endif +#ifdef BSP_USING_HWTIMER7 + { + "timer7", + { + TIMER7, + TIMER7_UP_IRQn, + RCU_TIMER7, + }, + {0}, + { + 1000000, + 1000, + 0xffff, + 0, /* count up mode */ + } + }, +#endif +#ifdef BSP_USING_HWTIMER8 + { + "timer8", + { + TIMER8, + TIMER8_IRQn, + RCU_TIMER8, + }, + {0}, + { + 1000000, + 1000, + 0xffff, + 0, /* count up mode */ + } + }, +#endif +#ifdef BSP_USING_HWTIMER9 + { + "timer9", + { + TIMER9, + TIMER9_IRQn, + RCU_TIMER9, + }, + {0}, + { + 1000000, + 1000, + 0xffff, + 0, /* count up mode */ + } + }, +#endif +#ifdef BSP_USING_HWTIMER10 + { + "timer10", + { + TIMER10, + TIMER10_IRQn, + RCU_TIMER10, + }, + {0}, + { + 1000000, + 1000, + 0xffff, + 0, /* count up mode */ + } + }, +#endif +#ifdef BSP_USING_HWTIMER11 + { + "timer11", + { + TIMER11, + TIMER11_IRQn, + RCU_TIMER11, + }, + {0}, + { + 1000000, + 1000, + 0xffff, + 0, /* count up mode */ + } + }, +#endif +#ifdef BSP_USING_HWTIMER12 + { + "timer12", + { + TIMER12, + TIMER12_IRQn, + RCU_TIMER12, + }, + {0}, + { + 1000000, + 1000, + 0xffff, + 0, /* count up mode */ + } + }, +#endif +#ifdef BSP_USING_HWTIMER13 + { + "timer13", + { + TIMER13, + TIMER13_IRQn, + RCU_TIMER13, + }, + {0}, + { + 1000000, + 1000, + 0xffff, + 0, /* count up mode */ + } + }, +#endif +}; + +#ifdef BSP_USING_HWTIMER0 +void TIMER0_UP_IRQHandler(void) +{ + rt_interrupt_enter(); + rt_device_hwtimer_isr(&g_gd32_hwtimer[TIM0_INDEX].hwtimer_dev); + TIMER_ClearIntBitState(g_gd32_hwtimer[TIM0_INDEX].hwtimer_dev.parent.user_data, \ + TIMER_INT_UPDATE); + rt_interrupt_leave(); +} +#endif + +#ifdef BSP_USING_HWTIMER1 +void TIMER1_IRQHandler(void) +{ + rt_interrupt_enter(); + rt_device_hwtimer_isr(&g_gd32_hwtimer[TIM1_INDEX].hwtimer_dev); + TIMER_ClearIntBitState(g_gd32_hwtimer[TIM1_INDEX].hwtimer_dev.parent.user_data, \ + TIMER_INT_UPDATE); + rt_interrupt_leave(); +} +#endif + +#ifdef BSP_USING_HWTIMER2 +void TIMER2_IRQHandler(void) +{ + rt_interrupt_enter(); + rt_device_hwtimer_isr(&g_gd32_hwtimer[TIM2_INDEX].hwtimer_dev); + TIMER_ClearIntBitState(g_gd32_hwtimer[TIM2_INDEX].hwtimer_dev.parent.user_data, \ + TIMER_INT_UPDATE); + rt_interrupt_leave(); +} +#endif + +#ifdef BSP_USING_HWTIMER3 +void TIMER3_IRQHandler(void) +{ + rt_interrupt_enter(); + rt_device_hwtimer_isr(&g_gd32_hwtimer[TIM3_INDEX].hwtimer_dev); + TIMER_ClearIntBitState(g_gd32_hwtimer[TIM3_INDEX].hwtimer_dev.parent.user_data, \ + TIMER_INT_UPDATE); + rt_interrupt_leave(); +} +#endif + +#ifdef BSP_USING_HWTIMER4 +void TIMER4_IRQHandler(void) +{ + rt_interrupt_enter(); + rt_device_hwtimer_isr(&g_gd32_hwtimer[TIM4_INDEX].hwtimer_dev); + TIMER_ClearIntBitState(g_gd32_hwtimer[TIM4_INDEX].hwtimer_dev.parent.user_data, \ + TIMER_INT_UPDATE); + rt_interrupt_leave(); +} +#endif + +#ifdef BSP_USING_HWTIMER5 +void TIMER5_IRQHandler(void) +{ + rt_interrupt_enter(); + rt_device_hwtimer_isr(&g_gd32_hwtimer[TIM5_INDEX].hwtimer_dev); + TIMER_ClearIntBitState(g_gd32_hwtimer[TIM5_INDEX].hwtimer_dev.parent.user_data, \ + TIMER_INT_UPDATE); + rt_interrupt_leave(); +} +#endif + +#ifdef BSP_USING_HWTIMER6 +void TIMER6_IRQHandler(void) +{ + rt_interrupt_enter(); + rt_device_hwtimer_isr(&g_gd32_hwtimer[TIM6_INDEX].hwtimer_dev); + TIMER_ClearIntBitState(g_gd32_hwtimer[TIM6_INDEX].hwtimer_dev.parent.user_data, \ + TIMER_INT_UPDATE); + rt_interrupt_leave(); +} +#endif + +#ifdef BSP_USING_HWTIMER7 +void TIMER7_UP_IRQHandler(void) +{ + rt_interrupt_enter(); + rt_device_hwtimer_isr(&g_gd32_hwtimer[TIM7_INDEX].hwtimer_dev); + TIMER_ClearIntBitState(g_gd32_hwtimer[TIM7_INDEX].hwtimer_dev.parent.user_data, \ + TIMER_INT_UPDATE); + rt_interrupt_leave(); +} +#endif + +static int rt_hwtimer_init(void) +{ + int ret = 0, i = 0; + + for (; i < ARRAY_SIZE(g_gd32_hwtimer); i++) + { + g_gd32_hwtimer[i].hwtimer_dev.ops = &g_gd32_hwtimer_ops; + g_gd32_hwtimer[i].hwtimer_dev.info = &g_gd32_hwtimer[i].hwtimer_info; + + rcu_periph_clock_enable(g_gd32_hwtimer[i].hw_data.rcu); + NVIC_SetPriority(g_gd32_hwtimer[i].hw_data.irqn, 0); + NVIC_EnableIRQ(g_gd32_hwtimer[i].hw_data.irqn); + TIMER_INTConfig(g_gd32_hwtimer[i].hw_data.reg_base, TIMER_INT_UPDATE, ENABLE); + ret = rt_device_hwtimer_register(&g_gd32_hwtimer[i].hwtimer_dev, \ + g_gd32_hwtimer[i].dev_name, g_gd32_hwtimer[i].hw_data.reg_base); + if (RT_EOK != ret) + { + rt_kprintf("failed register %s, err=%d\n", g_gd32_hwtimer[i].dev_name, \ + ret); + break; + } + } + + return ret; +} +INIT_BOARD_EXPORT(rt_hwtimer_init); +#endif diff --git a/bsp/gd32103c-eval/drivers/drv_hwtimer.h b/bsp/gd32103c-eval/drivers/drv_hwtimer.h new file mode 100644 index 0000000000..1b1a7e7da9 --- /dev/null +++ b/bsp/gd32103c-eval/drivers/drv_hwtimer.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-01-15 iysheng first release + */ + +#ifndef __DRV_HWTIMER_H__ +#define __DRV_HWTIMER_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef struct { + TIMER_TypeDef *reg_base; + IRQn_Type irqn; + rcu_periph_enum rcu; +} gd32_hwtimer_data; + +typedef struct { + char dev_name[RT_NAME_MAX]; + const gd32_hwtimer_data hw_data; + rt_hwtimer_t hwtimer_dev; + const struct rt_hwtimer_info hwtimer_info; +} gd32_hwtimer_device; + +#ifdef __cplusplus +} +#endif + +#endif /* __DRV_HWTIMER_H__ */ + -- cgit v1.3.1 From a281ee98745f4bdf6b4b1b1d202f9450430d074e Mon Sep 17 00:00:00 2001 From: iysheng Date: Fri, 5 Feb 2021 11:46:44 +0800 Subject: code format --- bsp/stm32/libraries/HAL_Drivers/drv_hwtimer.c | 2 +- components/drivers/include/drivers/hwtimer.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_hwtimer.c b/bsp/stm32/libraries/HAL_Drivers/drv_hwtimer.c index 2b5ace32f9..4550c2776f 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_hwtimer.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_hwtimer.c @@ -343,7 +343,7 @@ static rt_err_t timer_ctrl(rt_hwtimer_t *timer, rt_uint32_t cmd, void *arg) if (tim->Instance == TIM15 || tim->Instance == TIM16 || tim->Instance == TIM17) #elif defined(SOC_SERIES_STM32WB) if (tim->Instance == TIM16 || tim->Instance == TIM17) - #elif defined(SOC_SERIES_STM32MP1) +#elif defined(SOC_SERIES_STM32MP1) if(tim->Instance == TIM14 || tim->Instance == TIM16 || tim->Instance == TIM17) #elif defined(SOC_SERIES_STM32F1) || defined(SOC_SERIES_STM32F0) || defined(SOC_SERIES_STM32G0) if (0) diff --git a/components/drivers/include/drivers/hwtimer.h b/components/drivers/include/drivers/hwtimer.h index cbfeec2bf8..d00dbd8a13 100644 --- a/components/drivers/include/drivers/hwtimer.h +++ b/components/drivers/include/drivers/hwtimer.h @@ -70,7 +70,7 @@ typedef struct rt_hwtimer_device rt_int32_t freq; /* counting frequency set by the user */ rt_int32_t overflow; /* timer overflows */ - float period_sec; + float period_sec; rt_int32_t cycles; /* how many times will generate a timeout event after overflow */ rt_int32_t reload; /* reload cycles(using in period mode) */ rt_hwtimer_mode_t mode; /* timing mode(oneshot/period) */ -- cgit v1.3.1 From e2d6f6aadd17da4f6675fd929ed4d33343dccc4c Mon Sep 17 00:00:00 2001 From: iysheng Date: Fri, 5 Feb 2021 11:48:47 +0800 Subject: [bsp][gd32103c-eval] Modify adc driver with LOG_x function and deselect adc and hwtimer driver --- bsp/gd32103c-eval/drivers/drv_adc.c | 12 +++++------- bsp/gd32103c-eval/rtconfig.h | 3 --- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/bsp/gd32103c-eval/drivers/drv_adc.c b/bsp/gd32103c-eval/drivers/drv_adc.c index 0c8a77b4fe..65e781e40c 100644 --- a/bsp/gd32103c-eval/drivers/drv_adc.c +++ b/bsp/gd32103c-eval/drivers/drv_adc.c @@ -9,17 +9,15 @@ */ #include +#include #include -#include -#ifdef RT_USING_ADC +#define DBG_TAG "drv.adc" +#define DBG_LVL DBG_INFO -//#define DRV_DEBUG -#define LOG_TAG "drv.adc" +#include -#ifndef ARRAY_SIZE -#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) -#endif +#ifdef RT_USING_ADC #define MAX_EXTERN_ADC_CHANNEL 16 diff --git a/bsp/gd32103c-eval/rtconfig.h b/bsp/gd32103c-eval/rtconfig.h index 972f2f41c9..cb5321e9e6 100644 --- a/bsp/gd32103c-eval/rtconfig.h +++ b/bsp/gd32103c-eval/rtconfig.h @@ -85,7 +85,6 @@ #define RT_SERIAL_USING_DMA #define RT_SERIAL_RB_BUFSZ 64 #define RT_USING_PIN -#define RT_USING_ADC /* Using USB */ @@ -161,7 +160,5 @@ #define BSP_USING_UART #define BSP_USING_UART0 -#define BSP_USING_ADC -#define BSP_USING_ADC0 #endif -- cgit v1.3.1 From 23304a77d9c2d0f06fc7fc412afd4d9a74dcfff3 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Sat, 6 Feb 2021 02:27:18 +0800 Subject: [bug][pin] 修复错误码没有为负的错误 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/drivers/misc/pin.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/components/drivers/misc/pin.c b/components/drivers/misc/pin.c index 2750f5105a..6f27fe516d 100644 --- a/components/drivers/misc/pin.c +++ b/components/drivers/misc/pin.c @@ -6,6 +6,7 @@ * Change Logs: * Date Author Notes * 2015-01-20 Bernard the first version + * 2021-02-06 Meco Man fix RT_ENOSYS code in negative */ #include @@ -108,7 +109,7 @@ rt_err_t rt_pin_attach_irq(rt_int32_t pin, rt_uint32_t mode, { return _hw_pin.ops->pin_attach_irq(&_hw_pin.parent, pin, mode, hdr, args); } - return RT_ENOSYS; + return -RT_ENOSYS; } rt_err_t rt_pin_detach_irq(rt_int32_t pin) { @@ -117,7 +118,7 @@ rt_err_t rt_pin_detach_irq(rt_int32_t pin) { return _hw_pin.ops->pin_detach_irq(&_hw_pin.parent, pin); } - return RT_ENOSYS; + return -RT_ENOSYS; } rt_err_t rt_pin_irq_enable(rt_base_t pin, rt_uint32_t enabled) @@ -127,7 +128,7 @@ rt_err_t rt_pin_irq_enable(rt_base_t pin, rt_uint32_t enabled) { return _hw_pin.ops->pin_irq_enable(&_hw_pin.parent, pin, enabled); } - return RT_ENOSYS; + return -RT_ENOSYS; } /* RT-Thread Hardware PIN APIs */ -- cgit v1.3.1 From b1cdc3a2cbce88d9cd015eeaa5cfed09e75a1858 Mon Sep 17 00:00:00 2001 From: tangweikang Date: Fri, 5 Feb 2021 18:27:41 +0800 Subject: [toolchain] Added support for the TASKING toolchain. --- include/libc/libc_ioctl.h | 2 +- include/rtdef.h | 12 ++++++++++++ src/components.c | 9 ++++++--- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/include/libc/libc_ioctl.h b/include/libc/libc_ioctl.h index 812a119507..516c56b1f4 100644 --- a/include/libc/libc_ioctl.h +++ b/include/libc/libc_ioctl.h @@ -16,7 +16,7 @@ #define _IOC_WRITE 1U #define _IOC_READ 2U -#ifndef _WIN32 +#if !defined (_WIN32) && !defined (__TASKING__) #define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0) #define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c)) #define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c)) diff --git a/include/rtdef.h b/include/rtdef.h index e4ddbd37d3..1226b43020 100644 --- a/include/rtdef.h +++ b/include/rtdef.h @@ -192,6 +192,18 @@ typedef rt_base_t rt_off_t; /**< Type for offset */ #define RT_WEAK #define rt_inline static inline #define RTT_API +#elif defined (__TASKING__) + + #include + #define SECTION(x) + #define RT_UNUSED + #define RT_USED + #define PRAGMA(x) _Pragma(#x) + #define ALIGN(n) + #define RT_WEAK + #define rt_inline static inline + #define RTT_API + #else #error not supported tool chain #endif diff --git a/src/components.c b/src/components.c index e7824b65ef..8ea5654d0c 100644 --- a/src/components.c +++ b/src/components.c @@ -173,19 +173,22 @@ struct rt_thread main_thread; void main_thread_entry(void *parameter) { extern int main(void); - extern int $Super$$main(void); #ifdef RT_USING_COMPONENTS_INIT /* RT-Thread components initialization */ rt_components_init(); #endif + #ifdef RT_USING_SMP rt_hw_secondary_cpu_up(); #endif /* invoke system main function */ #if defined(__CC_ARM) || defined(__CLANG_ARM) - $Super$$main(); /* for ARMCC. */ -#elif defined(__ICCARM__) || defined(__GNUC__) + { + extern int $Super$$main(void); + $Super$$main(); /* for ARMCC. */ + } +#elif defined(__ICCARM__) || defined(__GNUC__) || defined(__TASKING__) main(); #endif } -- cgit v1.3.1 From 0d30632de6864a7cfaaa3a1de78ff7ef8f77539a Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Sun, 7 Feb 2021 22:09:22 +0800 Subject: fix #3976 --- components/libc/compilers/common/time.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index e2dae1feaf..ad167a85c7 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -213,22 +213,12 @@ RT_WEAK clock_t clock(void) /* TODO: timezone */ int gettimeofday(struct timeval *tp, struct timezone *tz) { - time_t time = 0; -#ifdef RT_USING_DEVICE - rt_device_t device; - device = rt_device_find("rtc"); - RT_ASSERT(device != RT_NULL); - rt_device_control(device, RT_DEVICE_CTRL_RTC_GET_TIME, &time); + time_t time = time(NULL); if (tp != RT_NULL) { tp->tv_sec = time; tp->tv_usec = 0; } -#else - tv->tv_sec = 0; - tv->tv_usec = 0; -#endif - return time; } -- cgit v1.3.1 From d92f8a53da900f4c03dd8c5c0b8163a03a72a9df Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Sun, 7 Feb 2021 22:25:30 +0800 Subject: update --- components/libc/compilers/common/time.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index ad167a85c7..d7f239bea1 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -213,13 +213,13 @@ RT_WEAK clock_t clock(void) /* TODO: timezone */ int gettimeofday(struct timeval *tp, struct timezone *tz) { - time_t time = time(NULL); + time_t t = time(RT_NULL); if (tp != RT_NULL) { - tp->tv_sec = time; + tp->tv_sec = t; tp->tv_usec = 0; } - return time; + return 0; } time_t timegm(struct tm * const t) -- cgit v1.3.1 From 4c6962436ae8a89252c397dffac4b865f5cb663f Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Sun, 7 Feb 2021 22:33:37 +0800 Subject: update --- components/libc/compilers/common/time.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index d7f239bea1..bdbb27bce4 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -213,10 +213,9 @@ RT_WEAK clock_t clock(void) /* TODO: timezone */ int gettimeofday(struct timeval *tp, struct timezone *tz) { - time_t t = time(RT_NULL); if (tp != RT_NULL) { - tp->tv_sec = t; + tp->tv_sec = time(RT_NULL); tp->tv_usec = 0; } return 0; -- cgit v1.3.1 From 6c7dd305329602611aba93772357aa5a394a3a6e Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Mon, 8 Feb 2021 00:56:31 +0800 Subject: add function settimeofday & stime --- components/libc/compilers/common/sys/time.h | 4 +- components/libc/compilers/common/time.c | 71 +++++++++++++++++++++-------- 2 files changed, 55 insertions(+), 20 deletions(-) diff --git a/components/libc/compilers/common/sys/time.h b/components/libc/compilers/common/sys/time.h index e99fd7d54f..599b8b5262 100644 --- a/components/libc/compilers/common/sys/time.h +++ b/components/libc/compilers/common/sys/time.h @@ -48,8 +48,10 @@ struct timezone { int tz_dsttime; /* type of dst correction */ }; -int gettimeofday(struct timeval *tp, struct timezone *tz); +int stime(const time_t *t); time_t timegm(struct tm * const t); +int gettimeofday(struct timeval *tv, struct timezone *tz); +int settimeofday(const struct timeval *tv, const struct timezone *tz); #ifdef __cplusplus } diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index bdbb27bce4..155a04f92f 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -8,6 +8,8 @@ * 2019-08-21 zhangjun copy from minilibc * 2020-09-07 Meco Man combine gcc armcc iccarm * 2021-02-05 Meco Man add timegm() + * 2021-02-07 Meco Man fixed gettimeofday() time() + * 2021-02-08 Meco Man add settimeofday() stime() */ #include @@ -175,24 +177,15 @@ time_t time(time_t *t) #endif { time_t time_now = 0; - #ifdef RT_USING_RTC - static rt_device_t device = RT_NULL; - - /* optimization: find rtc device only first. */ - if (device == RT_NULL) - { - device = rt_device_find("rtc"); - } + rt_device_t device; /* read timestamp from RTC device. */ - if (device != RT_NULL) + device = rt_device_find("rtc"); + if (rt_device_open(device, 0) == RT_EOK) { - if (rt_device_open(device, 0) == RT_EOK) - { - rt_device_control(device, RT_DEVICE_CTRL_RTC_GET_TIME, &time_now); - rt_device_close(device); - } + rt_device_control(device, RT_DEVICE_CTRL_RTC_GET_TIME, &time_now); + rt_device_close(device); } #endif /* RT_USING_RTC */ @@ -210,15 +203,27 @@ RT_WEAK clock_t clock(void) return rt_tick_get(); } -/* TODO: timezone */ -int gettimeofday(struct timeval *tp, struct timezone *tz) +int stime(const time_t *t) { - if (tp != RT_NULL) +#ifdef RT_USING_RTC + rt_device_t device; + + /* read timestamp from RTC device. */ + device = rt_device_find("rtc"); + if (rt_device_open(device, 0) == RT_EOK) + { + rt_device_control(device, RT_DEVICE_CTRL_RTC_SET_TIME, (void*)t); + rt_device_close(device); + } + else { - tp->tv_sec = time(RT_NULL); - tp->tv_usec = 0; + return -1; } return 0; + +#else + return -1; +#endif /* RT_USING_RTC */ } time_t timegm(struct tm * const t) @@ -294,3 +299,31 @@ time_t timegm(struct tm * const t) i = 60; return ((day + t->tm_hour) * i + t->tm_min) * i + t->tm_sec; } + +/* TODO: timezone */ +int gettimeofday(struct timeval *tv, struct timezone *tz) +{ + if (tv != RT_NULL) + { + tv->tv_sec = time(RT_NULL); + tv->tv_usec = 0; + return 0; + } + else + { + return -1; + } +} + +/* TODO: timezone */ +int settimeofday(const struct timeval *tv, const struct timezone *tz) +{ + if (tv != RT_NULL) + { + return stime(&tv->tv_sec); + } + else + { + return -1; + } +} -- cgit v1.3.1 From d0c2631b1215af38eb07b24cd25a751640e9c07c Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Mon, 8 Feb 2021 10:33:12 +0800 Subject: revert time() --- components/libc/compilers/common/time.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index 155a04f92f..a67c0497af 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -8,7 +8,7 @@ * 2019-08-21 zhangjun copy from minilibc * 2020-09-07 Meco Man combine gcc armcc iccarm * 2021-02-05 Meco Man add timegm() - * 2021-02-07 Meco Man fixed gettimeofday() time() + * 2021-02-07 Meco Man fixed gettimeofday() * 2021-02-08 Meco Man add settimeofday() stime() */ @@ -177,15 +177,24 @@ time_t time(time_t *t) #endif { time_t time_now = 0; + #ifdef RT_USING_RTC - rt_device_t device; + static rt_device_t device = RT_NULL; + + /* optimization: find rtc device only first. */ + if (device == RT_NULL) + { + device = rt_device_find("rtc"); + } /* read timestamp from RTC device. */ - device = rt_device_find("rtc"); - if (rt_device_open(device, 0) == RT_EOK) + if (device != RT_NULL) { - rt_device_control(device, RT_DEVICE_CTRL_RTC_GET_TIME, &time_now); - rt_device_close(device); + if (rt_device_open(device, 0) == RT_EOK) + { + rt_device_control(device, RT_DEVICE_CTRL_RTC_GET_TIME, &time_now); + rt_device_close(device); + } } #endif /* RT_USING_RTC */ -- cgit v1.3.1 From 9b428e519fc91204f4be5e91f1436ba6fd63119b Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Mon, 8 Feb 2021 10:42:50 +0800 Subject: avoid warning --- components/libc/compilers/common/time.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index a67c0497af..bd251d99bf 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -329,7 +329,7 @@ int settimeofday(const struct timeval *tv, const struct timezone *tz) { if (tv != RT_NULL) { - return stime(&tv->tv_sec); + return stime((const time_t *)&tv->tv_sec); } else { -- cgit v1.3.1 From 3e9c77efd5aac880e2f5d5db895d50c227dda663 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Mon, 8 Feb 2021 10:55:08 +0800 Subject: 优化IAR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/libc/compilers/common/time.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index bd251d99bf..bc77aee510 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -18,9 +18,6 @@ #include #endif - -#if !defined (__IAR_SYSTEMS_ICC__) - /* seconds per day */ #define SPD 24*60*60 @@ -155,8 +152,6 @@ char* ctime(const time_t *timep) return asctime(localtime(timep)); } -#endif /* __IAR_SYSTEMS_ICC__ */ - /** * Returns the current time. * -- cgit v1.3.1 From 2645aec2e3b5b805d697b2ec546faeb5157e8d81 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Mon, 8 Feb 2021 11:30:49 +0800 Subject: 删除没有用的预编译,在新版的IAR中此已经不需要了 对time函数增加RT_WEAK MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/libc/compilers/common/time.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index bc77aee510..7e4a98f923 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -160,16 +160,7 @@ char* ctime(const time_t *timep) * @return time_t return timestamp current. * */ -#if defined (__IAR_SYSTEMS_ICC__) && (__VER__) >= 6020000 /* for IAR 6.2 later Compiler */ -#pragma module_name = "?time" -#if _DLIB_TIME_USES_64 -time_t __time64(time_t *t) -#else -time_t __time32(time_t *t) -#endif -#else /* Keil & GCC */ -time_t time(time_t *t) -#endif +RT_WEAK time_t time(time_t *t) { time_t time_now = 0; -- cgit v1.3.1 From 39ff4b5a97accf4a0c2134b8b7b395482fc785fb Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Mon, 8 Feb 2021 11:37:24 +0800 Subject: 修改时区计算公式的错误 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/libc/compilers/common/time.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index 7e4a98f923..2cea9b75ce 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -101,10 +101,10 @@ struct tm* gmtime(const time_t* t) struct tm* localtime_r(const time_t* t, struct tm* r) { time_t local_tz; - int timezone; + int utc; - timezone = 0 * 3600 * 8; /* GTM: UTC+0 */ - local_tz = *t + timezone; + utc = 3600 * 0; /* GTM: UTC+0 */ + local_tz = *t + utc; return gmtime_r(&local_tz, r); } -- cgit v1.3.1 From a76fde6ca46dc2a7ecf98ccfb076db9182900be5 Mon Sep 17 00:00:00 2001 From: David Lin Date: Mon, 8 Feb 2021 12:34:25 +0800 Subject: [bsp] mini optimized the drv_xpt2046.c error device name xpt2049 in pi4 , so changed xpt2049 -> xpt2046. --- bsp/raspberry-pi/raspi4-32/driver/touch/drv_xpt2046.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bsp/raspberry-pi/raspi4-32/driver/touch/drv_xpt2046.c b/bsp/raspberry-pi/raspi4-32/driver/touch/drv_xpt2046.c index 5c3fcf749c..489701f079 100644 --- a/bsp/raspberry-pi/raspi4-32/driver/touch/drv_xpt2046.c +++ b/bsp/raspberry-pi/raspi4-32/driver/touch/drv_xpt2046.c @@ -19,7 +19,7 @@ #define DBG_LVL DBG_INFO #include -//XPT2049 +//XPT2046 #define READ_X (0xD0) #define READ_Y (0x90) @@ -218,7 +218,7 @@ static struct rt_touch_ops touch_ops = .touch_control = xpt2046_control, }; -static int hw_xpt2049_touch_init(void) +static int hw_xpt2046_touch_init(void) { //touch sem rt_sem_init(&touch_ack, "touch_ack", 0, RT_IPC_FLAG_FIFO); @@ -249,4 +249,4 @@ static int hw_xpt2049_touch_init(void) return 0; } -INIT_DEVICE_EXPORT(hw_xpt2049_touch_init); +INIT_DEVICE_EXPORT(hw_xpt2046_touch_init); -- cgit v1.3.1 From 10e955638de4cb53ca6a84fa2f1895d74d68dab2 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Mon, 8 Feb 2021 15:01:13 +0800 Subject: [stm32][bluepill] 增加英文参考资料 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/stm32/stm32f103-blue-pill/README.pdf | Bin 4619743 -> 0 bytes .../documents/Beginning STM32 (excerpt).pdf | Bin 0 -> 1355720 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bsp/stm32/stm32f103-blue-pill/README.pdf create mode 100644 bsp/stm32/stm32f103-blue-pill/documents/Beginning STM32 (excerpt).pdf diff --git a/bsp/stm32/stm32f103-blue-pill/README.pdf b/bsp/stm32/stm32f103-blue-pill/README.pdf deleted file mode 100644 index cfa5595fb8..0000000000 Binary files a/bsp/stm32/stm32f103-blue-pill/README.pdf and /dev/null differ diff --git a/bsp/stm32/stm32f103-blue-pill/documents/Beginning STM32 (excerpt).pdf b/bsp/stm32/stm32f103-blue-pill/documents/Beginning STM32 (excerpt).pdf new file mode 100644 index 0000000000..c58be7d135 Binary files /dev/null and b/bsp/stm32/stm32f103-blue-pill/documents/Beginning STM32 (excerpt).pdf differ -- cgit v1.3.1 From 7b32278a3977f82bf67f46994c78c7826978c221 Mon Sep 17 00:00:00 2001 From: David Lin Date: Mon, 8 Feb 2021 17:32:28 +0800 Subject: Update coding_style_cn.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 反应->反映 --- documentation/coding_style_cn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/coding_style_cn.md b/documentation/coding_style_cn.md index 80662ee959..9c4019d647 100644 --- a/documentation/coding_style_cn.md +++ b/documentation/coding_style_cn.md @@ -7,7 +7,7 @@ ## 1.目录名称 -目录名称如果无特殊的需求,请使用全小写的形式;目录名称应能够反应部分的意思,例 +目录名称如果无特殊的需求,请使用全小写的形式;目录名称应能够反映部分的意思,例 如各芯片移植由其芯片名称构成或芯片类别构成;components 目录下能够反映组件的意义。 ## 2.文件名称 -- cgit v1.3.1 From 66e2a9424b6d4a46be1bb697fa5acbec46a287a8 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Wed, 10 Feb 2021 21:01:16 +0800 Subject: update --- components/libc/compilers/common/time.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index 2cea9b75ce..dc33e0b9e5 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -101,10 +101,10 @@ struct tm* gmtime(const time_t* t) struct tm* localtime_r(const time_t* t, struct tm* r) { time_t local_tz; - int utc; + int utc_plus; - utc = 3600 * 0; /* GTM: UTC+0 */ - local_tz = *t + utc; + utc_plus = 3600 * 0; /* GTM: UTC+0 */ + local_tz = *t + utc_plus; return gmtime_r(&local_tz, r); } -- cgit v1.3.1 From 072dbe57c6da6bafb90128720462dd16e92741cd Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Thu, 11 Feb 2021 02:31:53 +0800 Subject: format & add clear tm_isdst --- components/libc/compilers/common/time.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index dc33e0b9e5..081e27de74 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -88,6 +88,8 @@ struct tm *gmtime_r(const time_t *timep, struct tm *r) ; r->tm_mon = i; r->tm_mday += work - __spm[i]; + + r->tm_isdst = 0; return r; } @@ -103,8 +105,8 @@ struct tm* localtime_r(const time_t* t, struct tm* r) time_t local_tz; int utc_plus; - utc_plus = 3600 * 0; /* GTM: UTC+0 */ - local_tz = *t + utc_plus; + utc_plus = 0; /* GTM: UTC+0 */ + local_tz = *t + utc_plus * 3600; return gmtime_r(&local_tz, r); } -- cgit v1.3.1 From 5e5ceabfdce8638c5ec8b78d4a53aa2ed0046b82 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Thu, 11 Feb 2021 02:32:47 +0800 Subject: add ctime_r() and re-implement ctime() --- components/libc/compilers/common/time.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index 081e27de74..ff76fae453 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -10,6 +10,7 @@ * 2021-02-05 Meco Man add timegm() * 2021-02-07 Meco Man fixed gettimeofday() * 2021-02-08 Meco Man add settimeofday() stime() + * 2021-02-10 Meco Man add ctime_r() and re-implement ctime() */ #include @@ -149,9 +150,15 @@ char* asctime(const struct tm *timeptr) return asctime_r(timeptr, buf); } -char* ctime(const time_t *timep) +char *ctime_r (const time_t * tim_p, char * result) { - return asctime(localtime(timep)); + struct tm tm; + return asctime_r (localtime_r (tim_p, &tm), result); +} + +char* ctime(const time_t *tim_p) +{ + return asctime (localtime (tim_p)); } /** -- cgit v1.3.1 From 51cb109cf8386088368469769d14b1d039551dd1 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Thu, 11 Feb 2021 02:33:45 +0800 Subject: fix bug #3183 - align days[] and months[] to 4 bytes --- components/libc/compilers/common/time.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index ff76fae453..68cd7f0837 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -11,6 +11,7 @@ * 2021-02-07 Meco Man fixed gettimeofday() * 2021-02-08 Meco Man add settimeofday() stime() * 2021-02-10 Meco Man add ctime_r() and re-implement ctime() + * 2021-02-11 Meco Man fix bug #3183 - align days[] and months[] to 4 bytes */ #include @@ -39,8 +40,9 @@ const short __spm[13] = (31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30), (31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31), }; -static const char days[] = "Sun Mon Tue Wed Thu Fri Sat "; -static const char months[] = "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec "; + +ALIGN(4) static const char days[] = "Sun Mon Tue Wed Thu Fri Sat "; +ALIGN(4) static const char months[] = "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec "; static int __isleap(int year) { -- cgit v1.3.1 From d67d4d3fd0ae292677cee9cf9a4d2bb5b5eefb1a Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Thu, 11 Feb 2021 02:34:38 +0800 Subject: add difftime() --- components/libc/compilers/common/time.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index 68cd7f0837..366bc28bd1 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -12,6 +12,7 @@ * 2021-02-08 Meco Man add settimeofday() stime() * 2021-02-10 Meco Man add ctime_r() and re-implement ctime() * 2021-02-11 Meco Man fix bug #3183 - align days[] and months[] to 4 bytes + * add difftime() */ #include @@ -163,6 +164,11 @@ char* ctime(const time_t *tim_p) return asctime (localtime (tim_p)); } +double difftime (time_t tim1, time_t tim2) +{ + return (double)(tim1 - tim2); +} + /** * Returns the current time. * -- cgit v1.3.1 From e3fee1ca77104bbc6d8e5e964b5f44fca7456c49 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Thu, 11 Feb 2021 02:46:23 +0800 Subject: 2 spaces -> 4 spaces --- components/libc/compilers/common/time.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index 366bc28bd1..e1c9340e69 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -155,8 +155,8 @@ char* asctime(const struct tm *timeptr) char *ctime_r (const time_t * tim_p, char * result) { - struct tm tm; - return asctime_r (localtime_r (tim_p, &tm), result); + struct tm tm; + return asctime_r (localtime_r (tim_p, &tm), result); } char* ctime(const time_t *tim_p) -- cgit v1.3.1 From a400991ee9f8edf87a618d621129890a583d8c53 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Thu, 11 Feb 2021 02:58:19 +0800 Subject: remove _gettimeofday_r() and _times_r() --- components/libc/compilers/newlib/syscalls.c | 121 ++-------------------------- 1 file changed, 8 insertions(+), 113 deletions(-) diff --git a/components/libc/compilers/newlib/syscalls.c b/components/libc/compilers/newlib/syscalls.c index 228fa0d140..ad56078367 100644 --- a/components/libc/compilers/newlib/syscalls.c +++ b/components/libc/compilers/newlib/syscalls.c @@ -5,7 +5,9 @@ * * Change Logs: * Date Author Notes + * 2021-02-11 Meco Man remove _gettimeofday_r() and _times_r() */ + #include #include #include @@ -190,14 +192,6 @@ _stat_r(struct _reent *ptr, const char *file, struct stat *pstat) #endif } -_CLOCK_T_ -_times_r(struct _reent *ptr, struct tms *ptms) -{ - /* return "not supported" */ - ptr->_errno = ENOTSUP; - return -1; -} - int _unlink_r(struct _reent *ptr, const char *file) { @@ -243,111 +237,6 @@ _write_r(struct _reent *ptr, int fd, const void *buf, size_t nbytes) } #endif -#ifdef RT_USING_PTHREADS - -#include -/* POSIX timer provides clock_gettime function */ -#include -int -_gettimeofday_r(struct _reent *ptr, struct timeval *__tp, void *__tzp) -{ - struct timespec tp; - - if (clock_gettime(CLOCK_REALTIME, &tp) == 0) - { - if (__tp != RT_NULL) - { - __tp->tv_sec = tp.tv_sec; - __tp->tv_usec = tp.tv_nsec / 1000UL; - } - - return tp.tv_sec; - } - - /* return "not supported" */ - ptr->_errno = ENOTSUP; - return -1; -} - -#else - -#define MILLISECOND_PER_SECOND 1000UL -#define MICROSECOND_PER_SECOND 1000000UL -#define NANOSECOND_PER_SECOND 1000000000UL - -#define MILLISECOND_PER_TICK (MILLISECOND_PER_SECOND / RT_TICK_PER_SECOND) -#define MICROSECOND_PER_TICK (MICROSECOND_PER_SECOND / RT_TICK_PER_SECOND) -#define NANOSECOND_PER_TICK (NANOSECOND_PER_SECOND / RT_TICK_PER_SECOND) - -struct timeval _timevalue = {0}; -#ifdef RT_USING_DEVICE -static void libc_system_time_init(void) -{ - time_t time; - rt_tick_t tick; - rt_device_t device; - - time = 0; - device = rt_device_find("rtc"); - if (device != RT_NULL) - { - /* get realtime seconds */ - rt_device_control(device, RT_DEVICE_CTRL_RTC_GET_TIME, &time); - } - - /* get tick */ - tick = rt_tick_get(); - - _timevalue.tv_usec = MICROSECOND_PER_SECOND - (tick%RT_TICK_PER_SECOND) * MICROSECOND_PER_TICK; - _timevalue.tv_sec = time - tick/RT_TICK_PER_SECOND - 1; -} -#endif - -int libc_get_time(struct timespec *time) -{ - rt_tick_t tick; - static rt_bool_t inited = 0; - - RT_ASSERT(time != RT_NULL); - - /* initialize system time */ - if (inited == 0) - { - libc_system_time_init(); - inited = 1; - } - - /* get tick */ - tick = rt_tick_get(); - - time->tv_sec = _timevalue.tv_sec + tick / RT_TICK_PER_SECOND; - time->tv_nsec = (_timevalue.tv_usec + (tick % RT_TICK_PER_SECOND) * MICROSECOND_PER_TICK) * 1000; - - return 0; -} - -int -_gettimeofday_r(struct _reent *ptr, struct timeval *__tp, void *__tzp) -{ - struct timespec tp; - - if (libc_get_time(&tp) == 0) - { - if (__tp != RT_NULL) - { - __tp->tv_sec = tp.tv_sec; - __tp->tv_usec = tp.tv_nsec / 1000UL; - } - - return tp.tv_sec; - } - - /* return "not supported" */ - ptr->_errno = ENOTSUP; - return -1; -} -#endif - /* Memory routine */ void * _malloc_r (struct _reent *ptr, size_t size) @@ -453,3 +342,9 @@ int flock(int fd, int operation) { return 0; } + +/* +These function will be implemented in the 'common/time.c' file +int _gettimeofday_r(struct _reent *ptr, struct timeval *__tp, void *__tzp); +_CLOCK_T_ _times_r(struct _reent *ptr, struct tms *ptms); +*/ -- cgit v1.3.1 From b4c8cb1445ad2e249473a101133d06478e8c1170 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Thu, 11 Feb 2021 03:02:32 +0800 Subject: remove declare --- components/libc/compilers/newlib/libc.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/components/libc/compilers/newlib/libc.h b/components/libc/compilers/newlib/libc.h index fdf2ab4f60..b4f28e44cc 100644 --- a/components/libc/compilers/newlib/libc.h +++ b/components/libc/compilers/newlib/libc.h @@ -34,10 +34,6 @@ int libc_system_init(void); int libc_stdio_set_console(const char* device_name, int mode); int libc_stdio_get_console(void); -/* some time related function */ -int libc_set_time(const struct timespec* time); -int libc_get_time(struct timespec* time); -int libc_time_to_tick(const struct timespec* time); #ifdef __cplusplus } #endif -- cgit v1.3.1 From e904f9bf27d0056ffc53f47e91f39ed9a0b1f11e Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Thu, 11 Feb 2021 03:03:59 +0800 Subject: update common --- components/libc/compilers/newlib/syscalls.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/libc/compilers/newlib/syscalls.c b/components/libc/compilers/newlib/syscalls.c index ad56078367..193080c926 100644 --- a/components/libc/compilers/newlib/syscalls.c +++ b/components/libc/compilers/newlib/syscalls.c @@ -344,7 +344,7 @@ int flock(int fd, int operation) } /* -These function will be implemented in the 'common/time.c' file +These functions will be implemented and replaced by the 'common/time.c' file int _gettimeofday_r(struct _reent *ptr, struct timeval *__tp, void *__tzp); _CLOCK_T_ _times_r(struct _reent *ptr, struct tms *ptms); */ -- cgit v1.3.1 From dd147925e52aa205a09d631984c545f9c99c52c2 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Thu, 11 Feb 2021 13:41:24 +0800 Subject: fix time() return value --- components/libc/compilers/common/time.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index e1c9340e69..fecae28f9f 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -174,23 +174,24 @@ double difftime (time_t tim1, time_t tim2) * * @param time_t * t the timestamp pointer, if not used, keep NULL. * - * @return time_t return timestamp current. + * @return The value ((time_t)-1) is returned if the calendar time is not available. + * If timer is not a NULL pointer, the return value is also stored in timer. * */ RT_WEAK time_t time(time_t *t) { - time_t time_now = 0; + time_t time_now = ((time_t)-1); /* default is not available */ #ifdef RT_USING_RTC static rt_device_t device = RT_NULL; - /* optimization: find rtc device only first. */ + /* optimization: find rtc device only first */ if (device == RT_NULL) { device = rt_device_find("rtc"); } - /* read timestamp from RTC device. */ + /* read timestamp from RTC device */ if (device != RT_NULL) { if (rt_device_open(device, 0) == RT_EOK) -- cgit v1.3.1 From dbe1a9c2dcc517e0d99ad5cfdfab12a4ebe357d7 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Thu, 11 Feb 2021 16:29:14 +0800 Subject: 移除无用的代码 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/libc/compilers/newlib/libc.h | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/components/libc/compilers/newlib/libc.h b/components/libc/compilers/newlib/libc.h index b4f28e44cc..9a76ffb79f 100644 --- a/components/libc/compilers/newlib/libc.h +++ b/components/libc/compilers/newlib/libc.h @@ -10,23 +10,10 @@ #ifndef __RTT_LIBC_H__ #define __RTT_LIBC_H__ -#include -#include -#include -#include - #ifndef _EXFUN -#define _EXFUN(name, proto) name proto +#define _EXFUN(name, proto) name proto #endif -#define MILLISECOND_PER_SECOND 1000UL -#define MICROSECOND_PER_SECOND 1000000UL -#define NANOSECOND_PER_SECOND 1000000000UL - -#define MILLISECOND_PER_TICK (MILLISECOND_PER_SECOND / RT_TICK_PER_SECOND) -#define MICROSECOND_PER_TICK (MICROSECOND_PER_SECOND / RT_TICK_PER_SECOND) -#define NANOSECOND_PER_TICK (NANOSECOND_PER_SECOND / RT_TICK_PER_SECOND) - #ifdef __cplusplus extern "C" { #endif -- cgit v1.3.1 From ce4fabe158a9b0367712a4afe904b5d6d7da9f78 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Thu, 11 Feb 2021 20:48:30 +0800 Subject: add errno --- components/libc/compilers/common/time.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/components/libc/compilers/common/time.c b/components/libc/compilers/common/time.c index fecae28f9f..a980f742fb 100644 --- a/components/libc/compilers/common/time.c +++ b/components/libc/compilers/common/time.c @@ -13,6 +13,7 @@ * 2021-02-10 Meco Man add ctime_r() and re-implement ctime() * 2021-02-11 Meco Man fix bug #3183 - align days[] and months[] to 4 bytes * add difftime() + * 2021-02-12 Meco Man add errno */ #include @@ -208,6 +209,11 @@ RT_WEAK time_t time(time_t *t) *t = time_now; } + if(time_now == (time_t)-1) + { + errno = ENOSYS; + } + return time_now; } @@ -230,11 +236,13 @@ int stime(const time_t *t) } else { + errno = ENOSYS; return -1; } return 0; #else + errno = ENOSYS; return -1; #endif /* RT_USING_RTC */ } @@ -316,14 +324,17 @@ time_t timegm(struct tm * const t) /* TODO: timezone */ int gettimeofday(struct timeval *tv, struct timezone *tz) { - if (tv != RT_NULL) + time_t t = time(RT_NULL); + + if (tv != RT_NULL && t != (time_t)-1) { - tv->tv_sec = time(RT_NULL); + tv->tv_sec = t; tv->tv_usec = 0; return 0; } else { + errno = ENOSYS; return -1; } } @@ -337,6 +348,7 @@ int settimeofday(const struct timeval *tv, const struct timezone *tz) } else { + errno = ENOSYS; return -1; } } -- cgit v1.3.1