support stm8s-discovery
This commit is contained in:
13
regnual/sys-stm8s-discovery.h
Normal file
13
regnual/sys-stm8s-discovery.h
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#define STM32_PLLXTPRE STM32_PLLXTPRE_DIV1
|
||||||
|
#define STM32_PLLMUL_VALUE 9
|
||||||
|
#define STM32_HSECLK 8000000
|
||||||
|
|
||||||
|
#undef GPIO_USB_CLEAR_TO_ENABLE
|
||||||
|
#define GPIO_LED_SET_TO_EMIT 8
|
||||||
|
|
||||||
|
#define VAL_GPIO_ODR 0xFFFFFFFF
|
||||||
|
#define VAL_GPIO_CRH 0x88888883 /* PD15...PD8 */
|
||||||
|
#define VAL_GPIO_CRL 0x88888888 /* PD7...PD0 */
|
||||||
|
|
||||||
|
#define GPIO_LED_BASE GPIOA_BASE
|
||||||
|
#undef GPIO_USB_BASE
|
||||||
@@ -177,7 +177,9 @@ struct GPIO {
|
|||||||
#define GPIOE_BASE (APB2PERIPH_BASE + 0x1800)
|
#define GPIOE_BASE (APB2PERIPH_BASE + 0x1800)
|
||||||
#define GPIOE ((struct GPIO *) GPIOE_BASE)
|
#define GPIOE ((struct GPIO *) GPIOE_BASE)
|
||||||
|
|
||||||
|
#ifdef GPIO_USB_BASE
|
||||||
#define GPIO_USB ((struct GPIO *) GPIO_USB_BASE)
|
#define GPIO_USB ((struct GPIO *) GPIO_USB_BASE)
|
||||||
|
#endif
|
||||||
#define GPIO_LED ((struct GPIO *) GPIO_LED_BASE)
|
#define GPIO_LED ((struct GPIO *) GPIO_LED_BASE)
|
||||||
|
|
||||||
static __attribute__ ((used))
|
static __attribute__ ((used))
|
||||||
@@ -188,37 +190,53 @@ void gpio_init (void)
|
|||||||
RCC->APB2RSTR = RCC_APB2RSTR_IOPDRST;
|
RCC->APB2RSTR = RCC_APB2RSTR_IOPDRST;
|
||||||
RCC->APB2RSTR = 0;
|
RCC->APB2RSTR = 0;
|
||||||
|
|
||||||
GPIO_USB->ODR = VAL_GPIO_ODR;
|
GPIO_LED->ODR = VAL_GPIO_ODR;
|
||||||
GPIO_USB->CRH = VAL_GPIO_CRH;
|
GPIO_LED->CRH = VAL_GPIO_CRH;
|
||||||
GPIO_USB->CRL = VAL_GPIO_CRL;
|
GPIO_LED->CRL = VAL_GPIO_CRL;
|
||||||
|
|
||||||
#if GPIO_USB_BASE != GPIO_LED_BASE
|
#if defined(GPIO_USB_BASE) && GPIO_USB_BASE != GPIO_LED_BASE
|
||||||
GPIO_LED->ODR = VAL_GPIO_LED_ODR;
|
GPIO_USB->ODR = VAL_GPIO_USB_ODR;
|
||||||
GPIO_LED->CRH = VAL_GPIO_LED_CRH;
|
GPIO_USB->CRH = VAL_GPIO_USB_CRH;
|
||||||
GPIO_LED->CRL = VAL_GPIO_LED_CRL;
|
GPIO_USB->CRL = VAL_GPIO_USB_CRL;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
usb_cable_config (int on)
|
usb_cable_config (int on)
|
||||||
{
|
{
|
||||||
#if defined(GPIO_USB_CLEAR_TO_ENABLE)
|
#ifdef GPIO_USB_BASE
|
||||||
|
# ifdef GPIO_USB_CLEAR_TO_ENABLE
|
||||||
if (on)
|
if (on)
|
||||||
GPIO_USB->BRR = (1 << GPIO_USB_CLEAR_TO_ENABLE);
|
GPIO_USB->BRR = (1 << GPIO_USB_CLEAR_TO_ENABLE);
|
||||||
else
|
else
|
||||||
GPIO_USB->BSRR = (1 << GPIO_USB_CLEAR_TO_ENABLE);
|
GPIO_USB->BSRR = (1 << GPIO_USB_CLEAR_TO_ENABLE);
|
||||||
# endif
|
# endif
|
||||||
|
# ifdef GPIO_USB_SET_TO_ENABLE
|
||||||
|
if (on)
|
||||||
|
GPIO_USB->BSRR = (1 << GPIO_USB_SET_TO_ENABLE);
|
||||||
|
else
|
||||||
|
GPIO_USB->BRR = (1 << GPIO_USB_SET_TO_ENABLE);
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
(void)on;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
set_led (int on)
|
set_led (int on)
|
||||||
{
|
{
|
||||||
#if defined(GPIO_LED_CLEAR_TO_EMIT)
|
#ifdef GPIO_LED_CLEAR_TO_EMIT
|
||||||
if (on)
|
if (on)
|
||||||
GPIO_LED->BRR = (1 << GPIO_LED_CLEAR_TO_EMIT);
|
GPIO_LED->BRR = (1 << GPIO_LED_CLEAR_TO_EMIT);
|
||||||
else
|
else
|
||||||
GPIO_LED->BSRR = (1 << GPIO_LED_CLEAR_TO_EMIT);
|
GPIO_LED->BSRR = (1 << GPIO_LED_CLEAR_TO_EMIT);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef GPIO_LED_SET_TO_EMIT
|
||||||
|
if (on)
|
||||||
|
GPIO_LED->BSRR = (1 << GPIO_LED_SET_TO_EMIT);
|
||||||
|
else
|
||||||
|
GPIO_LED->BRR = (1 << GPIO_LED_SET_TO_EMIT);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -436,7 +454,6 @@ int
|
|||||||
flash_protect (void)
|
flash_protect (void)
|
||||||
{
|
{
|
||||||
int status;
|
int status;
|
||||||
uint16_t rdp;
|
|
||||||
|
|
||||||
status = flash_wait_for_last_operation (FLASH_ERASE_TIMEOUT);
|
status = flash_wait_for_last_operation (FLASH_ERASE_TIMEOUT);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user