1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-01-18 11:12:44 +01:00
RIOT/boards/common/blxxxpill/include/board_common.h
Kyle Burk 986488db85
cpu/stm32/f1: prevent corrupting AFIO->MAPR
The `SWJ_CFG` field of the `AFIO_MAPR` register is write only and values
read are undefined (random). Hence, using `AFIO->MAPR |= mask;` to
enable flags can corrupt the state of the `SWJ_CFG` (configure it to
an unintended value).

Two helper functions have been introduced:
- `afio_mapr_read()` reads the value, but sanitizes the `SWJ_CFG` field
  to zero
- `afio_mapr_write()` writes the given value, but applies the `SWJ_CFG`
  configured by the board before writing.

Finally, the `nucleo-f103rb` and `bluepill*`/`blackpill*` boards have
been updated to no longer specify `STM32F1_DISABLE_JTAG`, as this
is handled by the `SWJ_CFG` setting (which defaults to disabling JTAG).
2023-11-20 20:28:52 +01:00

67 lines
1.5 KiB
C

/*
* Copyright (C) 2015 TriaGnoSys GmbH
* 2017 Alexander Kurth, Sören Tempel, Tristan Bruns
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup boards_common_blxxxpill
*
* @{
*
* @file
* @brief Peripheral MCU configuration for the bluepill/blackpill board
*
* @author Víctor Ariño <victor.arino@triagnosys.com>
* @author Sören Tempel <tempel@uni-bremen.de>
* @author Tristan Bruns <tbruns@uni-bremen.de>
* @author Alexander Kurth <kurth1@uni-bremen.de>
*/
#ifndef BOARD_COMMON_H
#define BOARD_COMMON_H
#ifdef __cplusplus
extern "C" {
#endif
/**
* @name Macros for controlling the on-board LED.
* @{
*/
#ifndef LED0_PORT_NUM
#define LED0_PORT_NUM PORT_C /**< GPIO Port number the LED is connected to */
#endif
#ifndef LED0_PIN_NUM
#define LED0_PIN_NUM (13) /**< Pin number the LED is connected to */
#endif
#ifndef LED0_IS_INVERTED
#define LED0_IS_INVERTED 1
#endif
/** @} */
/**
* @brief Use the fist UART for STDIO on this board
*/
#define STDIO_UART_DEV UART_DEV(0)
/**
* @name xtimer configuration
* @{
*/
#define XTIMER_WIDTH (16)
#define XTIMER_BACKOFF (19)
/** @} */
#ifdef __cplusplus
}
#endif
#include "stm32_leds.h"
#endif /* BOARD_COMMON_H */
/** @} */