Skip to content
2 changes: 1 addition & 1 deletion cores/arduino/HardwareSerial.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ void HardwareSerial::setHandler(void *handler)
#endif

#if defined(HAVE_HWSERIAL6)
HardwareSerial Serial6(USART6);
HardwareSerial Serial6(UART6);
#endif

#if defined(HAVE_HWSERIAL7)
Expand Down
8 changes: 4 additions & 4 deletions cores/arduino/HardwareSerial.h
Original file line number Diff line number Diff line change
Expand Up @@ -173,16 +173,16 @@ class HardwareSerial : public Stream {
#if defined(UART4) || defined(USART4)
extern HardwareSerial Serial4;
#endif
#if defined(UART5) || defined(USART5)
#if defined(UART5)
extern HardwareSerial Serial5;
#endif
#if defined(USART6)
#if defined(UART6)
extern HardwareSerial Serial6;
#endif
#if defined(UART7) || defined(USART7)
#if defined(UART7)
extern HardwareSerial Serial7;
#endif
#if defined(UART8) || defined(USART8)
#if defined(UART8)
extern HardwareSerial Serial8;
#endif

Expand Down
42 changes: 32 additions & 10 deletions cores/arduino/HardwareTimer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,12 @@ HardwareTimer::HardwareTimer(TIM_TypeDef *instance)
#endif

#ifdef TIM2_BASE
NVIC_EnableIRQ(TIM2_IRQn);
#if defined(CH32X035)
NVIC_EnableIRQ(TIM2_UP_IRQn);
NVIC_EnableIRQ(TIM2_CC_IRQn);
#else
NVIC_EnableIRQ(TIM2_IRQn);
#endif
#endif

#if defined(TIM3_BASE) && !defined(CH32VM00X) //v006 has no interruption
Expand Down Expand Up @@ -1605,6 +1610,30 @@ extern "C" {
#endif //TIM1_BASE

#if defined(TIM2_BASE)

#if defined(CH32X035)
/**
* @brief TIM1 IRQHandler
* @param None
* @retval None
*/
void TIM2_UP_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
void TIM2_UP_IRQHandler(void)
{
if (HardwareTimer_Handle[TIMER2_INDEX]) {
HardwareTimer::updateCallback(&HardwareTimer_Handle[TIMER2_INDEX]->handle);
}
}

void TIM2_CC_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
void TIM2_CC_IRQHandler(void)
{
if (HardwareTimer_Handle[TIMER2_INDEX]) {
HardwareTimer::captureCompareCallback(&HardwareTimer_Handle[TIMER2_INDEX]->handle);
}
}

#else
/**
* @brief TIM2 IRQHandler
* @param None
Expand All @@ -1615,11 +1644,12 @@ extern "C" {
{
if (HardwareTimer_Handle[TIMER2_INDEX])
{
// HAL_TIM_IRQHandler(&HardwareTimer_Handle[TIMER2_INDEX]->handle);
HardwareTimer::updateCallback(&HardwareTimer_Handle[TIMER2_INDEX]->handle);
HardwareTimer::captureCompareCallback(&HardwareTimer_Handle[TIMER2_INDEX]->handle);
}
}
#endif

#endif //TIM2_BASE

#if defined(TIM3_BASE)
Expand All @@ -1632,7 +1662,6 @@ extern "C" {
void TIM3_IRQHandler(void)
{
if (HardwareTimer_Handle[TIMER3_INDEX]) {
// HAL_TIM_IRQHandler(&HardwareTimer_Handle[TIMER3_INDEX]->handle);
HardwareTimer::updateCallback(&HardwareTimer_Handle[TIMER3_INDEX]->handle);
HardwareTimer::captureCompareCallback(&HardwareTimer_Handle[TIMER3_INDEX]->handle);
}
Expand All @@ -1649,7 +1678,6 @@ extern "C" {
void TIM4_IRQHandler(void)
{
if (HardwareTimer_Handle[TIMER4_INDEX]) {
// HAL_TIM_IRQHandler(&HardwareTimer_Handle[TIMER4_INDEX]->handle);
HardwareTimer::updateCallback(&HardwareTimer_Handle[TIMER4_INDEX]->handle);
HardwareTimer::captureCompareCallback(&HardwareTimer_Handle[TIMER4_INDEX]->handle);
}
Expand All @@ -1666,7 +1694,6 @@ extern "C" {
void TIM5_IRQHandler(void)
{
if (HardwareTimer_Handle[TIMER5_INDEX]) {
// HAL_TIM_IRQHandler(&HardwareTimer_Handle[TIMER5_INDEX]->handle);
HardwareTimer::updateCallback(&HardwareTimer_Handle[TIMER5_INDEX]->handle);
HardwareTimer::captureCompareCallback(&HardwareTimer_Handle[TIMER5_INDEX]->handle);
}
Expand Down Expand Up @@ -1699,7 +1726,6 @@ extern "C" {
void TIM7_IRQHandler(void)
{
if (HardwareTimer_Handle[TIMER7_INDEX]) {
// HAL_TIM_IRQHandler(&HardwareTimer_Handle[TIMER7_INDEX]->handle);
HardwareTimer::updateCallback(&HardwareTimer_Handle[TIMER7_INDEX]->handle);
HardwareTimer::captureCompareCallback(&HardwareTimer_Handle[TIMER7_INDEX]->handle);
}
Expand All @@ -1716,15 +1742,13 @@ extern "C" {
void TIM8_UP_IRQHandler(void)
{
if (HardwareTimer_Handle[TIMER8_INDEX]) {
// HAL_TIM_IRQHandler(&HardwareTimer_Handle[TIMER8_INDEX]->handle);
HardwareTimer::updateCallback(&HardwareTimer_Handle[TIMER8_INDEX]->handle);
}
}
void TIM8_CC_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
void TIM8_CC_IRQHandler(void)
{
if (HardwareTimer_Handle[TIMER8_INDEX]) {
// HAL_TIM_IRQHandler(&HardwareTimer_Handle[TIMER8_INDEX]->handle);
HardwareTimer::captureCompareCallback(&HardwareTimer_Handle[TIMER8_INDEX]->handle);
}
}
Expand All @@ -1740,7 +1764,6 @@ extern "C" {
void TIM9_UP_IRQHandler(void)
{
if (HardwareTimer_Handle[TIMER9_INDEX]) {
// HAL_TIM_IRQHandler(&HardwareTimer_Handle[TIMER9_INDEX]->handle);
HardwareTimer::updateCallback(&HardwareTimer_Handle[TIMER9_INDEX]->handle);
}
}
Expand All @@ -1763,7 +1786,6 @@ extern "C" {
void TIM10_UP_IRQHandler(void)
{
if (HardwareTimer_Handle[TIMER10_INDEX]) {
// HAL_TIM_IRQHandler(&HardwareTimer_Handle[TIMER10_INDEX]->handle);
HardwareTimer::updateCallback(&HardwareTimer_Handle[TIMER10_INDEX]->handle);
}
}
Expand Down
2 changes: 1 addition & 1 deletion cores/arduino/ch32/backup.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ static inline void resetBackupDomain(void)
#ifdef PWR_MODULE_ENABLED
PWR_BackupAccessCmd(ENABLE);
#endif
#ifndef CH32V00x
#if !defined(CH32V00x) && !defined(CH32VM00X) && !(CH32X035)
RCC_BackupResetCmd(ENABLE);
RCC_BackupResetCmd(DISABLE);
#endif
Expand Down
14 changes: 11 additions & 3 deletions cores/arduino/ch32/timer.c
Original file line number Diff line number Diff line change
Expand Up @@ -339,8 +339,12 @@ IRQn_Type getTimerUpIrq(TIM_TypeDef *tim)
#endif
#if defined(TIM2_BASE)
case (uint32_t)TIM2_BASE:
IRQn = TIM2_IRQn;
break;
#if defined(CH32X035)
IRQn = TIM2_UP_IRQn;
#else
IRQn = TIM2_IRQn;
#endif
break;
#endif
#if defined(TIM3_BASE) && defined(TIM3_IRQn)
case (uint32_t)TIM3_BASE:
Expand Down Expand Up @@ -409,7 +413,11 @@ IRQn_Type getTimerCCIrq(TIM_TypeDef *tim)
#endif
#if defined(TIM2_BASE)
case (uint32_t)TIM2_BASE:
IRQn = TIM2_IRQn;
#if defined(CH32X035)
IRQn = TIM2_CC_IRQn;
#else
IRQn = TIM2_IRQn;
#endif
break;
#endif
#if defined(TIM3_BASE) && defined(TIM3_IRQn)
Expand Down
24 changes: 12 additions & 12 deletions variants/CH32L10x/CH32L103C8T6/PeripheralPins.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ WEAK const PinMap PinMap_ADC[] = {
{PA_3, ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 3)}, // ADC1_IN3
{PA_4, ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 4)}, // ADC1_IN4
{PA_5, ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 5)}, // ADC1_IN5
{NC, NP, 0, 0, 0}
{NC, NP, 0}
};
#endif

Expand All @@ -45,14 +45,14 @@ WEAK const PinMap PinMap_ADC[] = {
#ifdef I2C_MODULE_ENABLED
WEAK const PinMap PinMap_I2C_SDA[] = {
{PB_11, I2C2, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFOD, NOPULL, AFIO_NONE)},
{NC, NP, 0, 0}
{NC, NP, 0}
};
#endif

#ifdef I2C_MODULE_ENABLED
WEAK const PinMap PinMap_I2C_SCL[] = {
{PB_10, I2C2, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFOD, NOPULL, AFIO_NONE)},
{NC, NP, 0, 0}
{NC, NP, 0}
};
#endif

Expand Down Expand Up @@ -83,36 +83,36 @@ WEAK const PinMap PinMap_TIM[] = {
{PB_13, TIM1, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM1_DISABLE, 1)}, // TIM1_CH1N
{PB_14, TIM1, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM1_DISABLE, 2)}, // TIM1_CH2N
{PA_15, TIM1, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM1_DISABLE, 3)}, // TIM1_CH3N
{NC, NP, 0, 0, 0}
{NC, NP, 0}
};
#endif

//*** UART ***
#ifdef UART_MODULE_ENABLED
WEAK const PinMap PinMap_UART_TX[] = {
{PA_9, USART1, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, 0, AFIO_NONE)},
{NC, NP, 0, 0}
{NC, NP, 0}
};
#endif

#ifdef UART_MODULE_ENABLED
WEAK const PinMap PinMap_UART_RX[] = {
{PA_10, USART1, CH_PIN_DATA(CH_MODE_INPUT, CH_CNF_INPUT_PUPD, PULLUP, AFIO_NONE)},
{NC, NP, 0, 0}
{NC, NP, 0}
};
#endif

#ifdef UART_MODULE_ENABLED
WEAK const PinMap PinMap_UART_RTS[] = {
{NC, USART1, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, 0, AFIO_NONE)},
{NC, NP, 0, 0}
{NC, NP, 0}
};
#endif

#ifdef UART_MODULE_ENABLED
WEAK const PinMap PinMap_UART_CTS[] = {
{NC, USART1, CH_PIN_DATA(CH_MODE_INPUT, CH_CNF_INPUT_PUPD, PULLUP, AFIO_NONE)},
{NC, NP, 0, 0}
{NC, NP, 0}
};
#endif

Expand All @@ -121,28 +121,28 @@ WEAK const PinMap PinMap_UART_CTS[] = {
#ifdef SPI_MODULE_ENABLED
WEAK const PinMap PinMap_SPI_MOSI[] = {
{PB_15, SPI2, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, 0, AFIO_NONE)},
{NC, NP, 0, 0}
{NC, NP, 0}
};
#endif

#ifdef SPI_MODULE_ENABLED
WEAK const PinMap PinMap_SPI_MISO[] = {
{PB_14, SPI2, CH_PIN_DATA(CH_MODE_INPUT, CH_CNF_INPUT_FLOAT, 0, AFIO_NONE)},
{NC, NP, 0, 0}
{NC, NP, 0}
};
#endif

#ifdef SPI_MODULE_ENABLED
WEAK const PinMap PinMap_SPI_SCLK[] = {
{PB_13, SPI2, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, 0, AFIO_NONE)},
{NC, NP, 0, 0}
{NC, NP, 0}
};
#endif

#ifdef SPI_MODULE_ENABLED
WEAK const PinMap PinMap_SPI_SSEL[] = {
{PB_12, SPI1, CH_PIN_DATA(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, 0, AFIO_NONE)},
{NC, NP, 0, 0}
{NC, NP, 0}
};
#endif

Expand Down
4 changes: 2 additions & 2 deletions variants/CH32V00x/CH32V003F4/PeripheralPins.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ WEAK const PinMap PinMap_ADC[] = {
{PD_5, ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 5)}, // ADC1_IN5
{PA_6, ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 6)}, // ADC1_IN6
{PA_4, ADC1, CH_PIN_DATA_EXT(CH_MODE_INPUT, CH_CNF_INPUT_ANALOG, 0, AFIO_NONE, 7)}, // ADC1_IN7
{NC, NP, 0, 0, 0}
{NC, NP, 0}
};
#endif

Expand Down Expand Up @@ -74,7 +74,7 @@ WEAK const PinMap PinMap_TIM[] = {
{PD_0, TIM1, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM1_DISABLE, 1)}, // TIM1_CH1N
{PA_2, TIM1, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM1_DISABLE, 2)}, // TIM1_CH2N
{PD_1, TIM1, CH_PIN_DATA_EXT(CH_MODE_OUTPUT_50MHz, CH_CNF_OUTPUT_AFPP, NOPULL, AFIO_Remap_TIM1_DISABLE, 3)}, // TIM1_CH3N
{NC, NP, 0, 0, 0}
{NC, NP, 0}
};
#endif

Expand Down
Loading