Change the ST-Link SRST function to use libopencm3 helper functions and fix waiting for the pin-state, change init to use the SRST function for reset de-assertion
This commit is contained in:
parent
c5c0783337
commit
95053b3b4e
|
@ -68,9 +68,8 @@ void platform_init(void)
|
||||||
GPIO_CNF_OUTPUT_PUSHPULL, TCK_PIN);
|
GPIO_CNF_OUTPUT_PUSHPULL, TCK_PIN);
|
||||||
gpio_set_mode(TDI_PORT, GPIO_MODE_OUTPUT_50_MHZ,
|
gpio_set_mode(TDI_PORT, GPIO_MODE_OUTPUT_50_MHZ,
|
||||||
GPIO_CNF_OUTPUT_PUSHPULL, TDI_PIN);
|
GPIO_CNF_OUTPUT_PUSHPULL, TDI_PIN);
|
||||||
gpio_set(SRST_PORT, srst_pin);
|
|
||||||
gpio_set_mode(SRST_PORT, GPIO_MODE_OUTPUT_50_MHZ,
|
platform_srst_set_val(false);
|
||||||
GPIO_CNF_OUTPUT_OPENDRAIN, srst_pin);
|
|
||||||
|
|
||||||
gpio_set_mode(LED_PORT, GPIO_MODE_OUTPUT_2_MHZ,
|
gpio_set_mode(LED_PORT, GPIO_MODE_OUTPUT_2_MHZ,
|
||||||
GPIO_CNF_OUTPUT_PUSHPULL, led_idle_run);
|
GPIO_CNF_OUTPUT_PUSHPULL, led_idle_run);
|
||||||
|
@ -90,21 +89,17 @@ void platform_init(void)
|
||||||
|
|
||||||
void platform_srst_set_val(bool assert)
|
void platform_srst_set_val(bool assert)
|
||||||
{
|
{
|
||||||
uint32_t crl = GPIOB_CRL;
|
|
||||||
uint32_t shift = (srst_pin == GPIO0) ? 0 : 4;
|
|
||||||
uint32_t mask = 0xf << shift;
|
|
||||||
crl &= ~mask;
|
|
||||||
if (assert) {
|
if (assert) {
|
||||||
/* Set SRST as Open-Drain, 50 Mhz, low.*/
|
gpio_set_mode(SRST_PORT, GPIO_MODE_OUTPUT_50_MHZ,
|
||||||
GPIOB_BRR = srst_pin;
|
GPIO_CNF_OUTPUT_OPENDRAIN, srst_pin);
|
||||||
GPIOB_CRL = crl | (7 << shift);
|
gpio_clear(SRST_PORT, srst_pin);
|
||||||
|
while (gpio_get(SRST_PORT, srst_pin)) {};
|
||||||
} else {
|
} else {
|
||||||
/* Set SRST as input, pull-up.
|
gpio_set_mode(SRST_PORT, GPIO_MODE_INPUT,
|
||||||
* SRST might be unconnected, e.g on Nucleo-P!*/
|
GPIO_CNF_INPUT_PULL_UPDOWN, srst_pin);
|
||||||
GPIOB_CRL = crl | (8 << shift);
|
gpio_set(SRST_PORT, srst_pin);
|
||||||
GPIOB_BSRR = srst_pin;
|
while (!gpio_get(SRST_PORT, srst_pin)) {};
|
||||||
}
|
}
|
||||||
while (gpio_get(SRST_PORT, srst_pin) == assert) {};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool platform_srst_get_val()
|
bool platform_srst_get_val()
|
||||||
|
|
Loading…
Reference in New Issue