Skip to content

Instantly share code, notes, and snippets.

@nmz787
Last active March 10, 2017 08:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nmz787/f6516fbcd8071516e3cb7ec09cac7c15 to your computer and use it in GitHub Desktop.
Save nmz787/f6516fbcd8071516e3cb7ec09cac7c15 to your computer and use it in GitHub Desktop.
tables and a function to print a CSV-style register dump, on an STM32 MCU running MicroPython. Just import and call the dump function, then copy the serial output from your terminal
"""
usage:
import dump_regs
dump_regs.dump_regs()
"""
import re
import stm
# basically this, with some deletions (FLASH, DBGMCU):
# {m for m in dir(stm) if '_' not in m}
main_regs = {'DMA1', 'DMA2', 'WWDG', 'TIM10', 'TIM11', 'RTC', 'ADC1', 'TIM5', 'TIM4', 'SDIO', 'EXTI', 'TIM1', 'SYSCFG', 'I2S2EXT', 'IWDG', 'TIM3', 'TIM2', 'GPIOD', 'PWR', 'TIM9', 'GPIOA', 'GPIOB', 'I2C1', 'GPIOC', 'I2C3', 'I2C2', 'SPI3', 'SPI2', 'SPI1', 'SPI4', 'USART1', 'USART2', 'I2S3EXT', 'GPIOE', 'ADC', 'USART6', 'GPIOH', 'CRC', 'RCC'}
# { m for m in dir(stm) if "_" in m}
reg_fields = {'ADC_JDR2', 'ADC_JDR3', 'RCC_PLLCFGR', 'ADC_JDR4', 'DBGMCU_CR', 'I2C_OAR2', 'CRC_DR', 'SPI_CRCPR', 'I2C_OAR1', 'DMA_HIFCR', 'SPI_I2SPR', 'TIM_SR', 'RTC_CALR', 'RTC_BKP5R', 'USART_SR', 'GPIO_MODER', 'TIM_DIER', 'TIM_CCMR1', 'WWDG_CR', 'TIM_CCMR2', 'TIM_DCR', 'SYSCFG_MEMRMP', 'RTC_BKP11R', 'SYSCFG_EXTICR0', 'RCC_BDCR', 'GPIO_AFR0', 'GPIO_AFR1', 'EXTI_RTSR', 'RCC_AHB2RSTR', 'RCC_APB1LPENR', 'RCC_APB2LPENR', 'SYSCFG_EXTICR1', 'EXTI_IMR', 'SYSCFG_EXTICR2', 'SYSCFG_EXTICR3', 'RTC_BKP6R', 'SPI_I2SCFGR', 'SPI_TXCRCR', 'SPI_RXCRCR', 'I2C_TRISE', 'RCC_AHB3LPENR', 'I2C_DR', 'TIM_EGR', 'EXTI_EMR', 'TIM_CCER', 'TIM_CCR1', 'ADC_SR', 'IWDG_RLR', 'RCC_APB2ENR', 'TIM_CCR2', 'TIM_PSC', 'RTC_WPR', 'TIM_CCR3', 'TIM_CCR4', 'TIM_DMAR', 'RTC_BKP10R', 'RTC_WUTR', 'CRC_CR', 'RTC_BKP13R', 'RCC_APB1ENR', '__name__', 'RCC_CR', 'I2C_FLTR', 'GPIO_LCKR', 'PWR_CR', 'RTC_BKP19R', 'RCC_CIR', 'FLASH_KEYR', 'RTC_BKP7R', 'RTC_ALRMBR', 'EXTI_SWIER', 'FLASH_ACR', 'TIM_OR', 'RCC_AHB1RSTR', 'USART_DR', 'TIM_SMCR', 'USART_CR1', 'SPI_DR', 'USART_CR2', 'USART_CR3', 'RCC_APB2RSTR', 'I2C_CCR', 'TIM_RCR', 'RTC_BKP12R', 'ADC_SMPR1', 'ADC_SMPR2', 'RCC_SSCGR', 'ADC_JSQR', 'IWDG_KR', 'RTC_CALIBR', 'RTC_ISR', 'I2C_SR2', 'I2C_SR1', 'RTC_BKP0R', 'RCC_PLLI2SCFGR', 'RTC_BKP18R', 'DMA_LIFCR', 'IWDG_PR', 'IWDG_SR', 'TIM_CNT', 'DBGMCU_APB1FZ', 'USART_GTPR', 'RTC_CR', 'RTC_BKP15R', 'TIM_BDTR', 'USART_BRR', 'SPI_SR', 'GPIO_PUPDR', 'RTC_TR', 'FLASH_OPTKEYR', 'FLASH_OPTCR', 'DBGMCU_IDCODE', 'RCC_AHB2ENR', 'RCC_APB1RSTR', 'TIM_ARR', 'SYSCFG_CMPCR', 'EXTI_FTSR', 'RCC_AHB1ENR', 'RTC_TSSSR', 'RCC_CFGR', 'FLASH_CR', 'RTC_TAFCR', 'ADC_LTR', 'RTC_BKP1R', 'DBGMCU_APB2FZ', 'GPIO_ODR', 'RTC_BKP8R', 'GPIO_OSPEEDR', 'ADC_JOFR4', 'RTC_SHIFTR', 'RTC_BKP17R', 'ADC_JOFR1', 'RTC_BKP14R', 'ADC_JOFR3', 'ADC_JOFR2', 'PWR_CSR', 'EXTI_PR', 'RTC_TSTR', 'WWDG_SR', 'RTC_SSR', 'DMA_LISR', 'RCC_AHB3ENR', 'ADC_CR1', 'RTC_BKP2R', 'DMA_HISR', 'RTC_DR', 'ADC_CR2', 'GPIO_BSRRH', 'RCC_AHB3RSTR', 'RTC_BKP9R', 'GPIO_BSRRL', 'RTC_BKP16R', 'RCC_DCKCFGR', 'FLASH_SR', 'GPIO_BSRR', 'ADC_DR', 'GPIO_OTYPER', 'RCC_CSR', 'RTC_BKP4R', 'RCC_AHB1LPENR', 'RTC_ALRMAR', 'RCC_AHB2LPENR', 'TIM_CR1', 'TIM_CR2', 'FLASH_OPTCR1', 'WWDG_CFR', 'RTC_BKP3R', 'CRC_IDR', 'I2C_CR2', 'RTC_TSDR', 'I2C_CR1', 'SYSCFG_PMC', 'ADC_SQR1', 'ADC_SQR2', 'ADC_SQR3', 'RTC_PRER', 'SPI_CR1', 'GPIO_IDR', 'ADC_HTR', 'SPI_CR2', 'ADC_JDR1'}
def dump_regs():
for reg in main_regs:
reg_prefix = re.match(r'([A-Z]+)', reg).group(0)
for field in reg_fields:
if field.startswith(reg_prefix):
print('{}, {}, {}'.format(reg, field, bin(stm.mem32[getattr(stm, reg) + getattr(stm, field)])))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment