Регистры STM32F0
Регистры периферии STM32F0x1, F0x2 и F0x8 — STM32F031, F038, F042, F048, F051, F058, F071, F072, F078, F091 и F098: адреса блоков, битовые поля с назначением, значения после сброса по RM0091 и конструктор значения с кодом на C.
Источник — заголовки CMSIS пакета STM32CubeF0 (репозиторий cmsis-device-f0, Apache-2.0): структуры периферии, адреса экземпляров и макросы полей. В этой волне — одиннадцать заголовков, которые описывает справочное руководство RM0091; STM32F030 и STM32F070 описаны в RM0360 и появятся отдельно. Поля, которых нет у части линеек, отмечены.
У STM32F0 новые по сравнению с STM32F1 USART, I2C и АЦП: флаги USART сбрасываются через регистр ICR, скорость I2C задаётся одним регистром TIMINGR, а каналы АЦП выбираются маской. Имена в коде совпадают с CMSIS: регистр флагов USART1 — USART1->ISR, флаг готовности к передаче — USART_ISR_TXE.
Блоки периферии
- RCC — тактирование и сбросRCC_CR, RCC_CFGR, RCC_CIR, RCC_APB2RSTR, RCC_APB1RSTR, RCC_AHBENR, RCC_APB2ENR, RCC_APB1ENR, RCC_BDCR, RCC_CSR, RCC_AHBRSTR, RCC_CFGR2, RCC_CFGR3, RCC_CR2
- GPIO — порты ввода-выводаGPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, GPIOx_PUPDR, GPIOx_IDR, GPIOx_ODR, GPIOx_BSRR, GPIOx_LCKR, GPIOx_AFRL, GPIOx_AFRH, GPIOx_BRR
- SYSCFG — системная конфигурацияSYSCFG_CFGR1, SYSCFG_EXTICR1, SYSCFG_EXTICR2, SYSCFG_EXTICR3, SYSCFG_EXTICR4, SYSCFG_CFGR2
- EXTI — внешние прерыванияEXTI_IMR, EXTI_EMR, EXTI_RTSR, EXTI_FTSR, EXTI_SWIER, EXTI_PR
- USART — последовательные порты USARTUSART_CR1, USART_CR2, USART_CR3, USART_BRR, USART_GTPR, USART_RTOR, USART_RQR, USART_ISR, USART_ICR, USART_RDR, USART_TDR
- SPI — интерфейсы SPI и I2SSPI_CR1, SPI_CR2, SPI_SR, SPI_DR, SPI_CRCPR, SPI_RXCRCR, SPI_TXCRCR, SPI_I2SCFGR, SPI_I2SPR
- I2C — интерфейс I2CI2C_CR1, I2C_CR2, I2C_OAR1, I2C_OAR2, I2C_TIMINGR, I2C_TIMEOUTR, I2C_ISR, I2C_ICR, I2C_PECR, I2C_RXDR, I2C_TXDR
- TIM — таймерыTIMx_CR1, TIMx_CR2, TIMx_SMCR, TIMx_DIER, TIMx_SR, TIMx_EGR, TIMx_CCMR1, TIMx_CCMR2, TIMx_CCER, TIMx_CNT, TIMx_PSC, TIMx_ARR, TIMx_RCR, TIMx_CCR1, TIMx_CCR2, TIMx_CCR3, TIMx_CCR4, TIMx_BDTR, TIMx_DCR, TIMx_DMAR
- DMA — прямой доступ к памятиDMA_ISR, DMA_IFCR, DMA_CSELR, DMA_CCR, DMA_CNDTR, DMA_CPAR, DMA_CMAR
- ADC — аналого-цифровой преобразовательADC_ISR, ADC_IER, ADC_CR, ADC_CFGR1, ADC_CFGR2, ADC_SMPR, ADC_TR1, ADC_CHSELR, ADC_DR, ADC_CCR
- IWDG — независимый сторожевой таймерIWDG_KR, IWDG_PR, IWDG_RLR, IWDG_SR, IWDG_WINR
- WWDG — оконный сторожевой таймерWWDG_CR, WWDG_CFR, WWDG_SR
- CRC — вычислитель CRCCRC_DR, CRC_IDR, CRC_CR, CRC_INIT, CRC_POL
- DBGMCU — блок отладкиDBGMCU_IDCODE, DBGMCU_CR, DBGMCU_APB1_FZ, DBGMCU_APB2_FZ
- PWR — управление питаниемPWR_CR, PWR_CSR
- FLASH — интерфейс флеш-памятиFLASH_ACR, FLASH_KEYR, FLASH_OPTKEYR, FLASH_SR, FLASH_CR, FLASH_AR, FLASH_OBR, FLASH_WRPR
- RTC — часы реального времениRTC_TR, RTC_DR, RTC_CR, RTC_ISR, RTC_PRER, RTC_WUTR, RTC_ALRMAR, RTC_WPR, RTC_SSR, RTC_SHIFTR, RTC_TSTR, RTC_TSDR, RTC_TSSSR, RTC_CALR, RTC_TAFCR, RTC_ALRMASSR, RTC_BKP0R, RTC_BKP1R, RTC_BKP2R, RTC_BKP3R, RTC_BKP4R
- DAC — цифро-аналоговый преобразовательDAC_CR, DAC_SWTRIGR, DAC_DHR12R1, DAC_DHR12L1, DAC_DHR8R1, DAC_DHR12R2, DAC_DHR12L2, DAC_DHR8R2, DAC_DHR12RD, DAC_DHR12LD, DAC_DHR8RD, DAC_DOR1, DAC_DOR2, DAC_SR
- CAN — контроллер CANCAN_MCR, CAN_MSR, CAN_TSR, CAN_RF0R, CAN_RF1R, CAN_IER, CAN_ESR, CAN_BTR, CAN_TI0R, CAN_TDT0R, CAN_TDL0R, CAN_TDH0R, CAN_TI1R, CAN_TDT1R, CAN_TDL1R, CAN_TDH1R, CAN_TI2R, CAN_TDT2R, CAN_TDL2R, CAN_TDH2R, CAN_RI0R, CAN_RDT0R, CAN_RDL0R, CAN_RDH0R, CAN_RI1R, CAN_RDT1R, CAN_RDL1R, CAN_RDH1R, CAN_FMR, CAN_FM1R, CAN_FS1R, CAN_FFA1R, CAN_FA1R, CAN_F0R1, CAN_F0R2, CAN_F1R1, CAN_F1R2, CAN_F2R1, CAN_F2R2, CAN_F3R1, CAN_F3R2, CAN_F4R1, CAN_F4R2, CAN_F5R1, CAN_F5R2, CAN_F6R1, CAN_F6R2, CAN_F7R1, CAN_F7R2, CAN_F8R1, CAN_F8R2, CAN_F9R1, CAN_F9R2, CAN_F10R1, CAN_F10R2, CAN_F11R1, CAN_F11R2, CAN_F12R1, CAN_F12R2, CAN_F13R1, CAN_F13R2
Заголовки CMSIS и микроконтроллеры
| Заголовок | Микроконтроллеры |
|---|---|
| stm32f031x6.h | STM32F031x4, STM32F031x6 |
| stm32f038xx.h | STM32F038xx |
| stm32f042x6.h | STM32F042x4, STM32F042x6 |
| stm32f048xx.h | STM32F048xx |
| stm32f051x8.h | STM32F051x4, STM32F051x6, STM32F051x8 |
| stm32f058xx.h | STM32F058xx |
| stm32f071xb.h | STM32F071x8, STM32F071xB |
| stm32f072xb.h | STM32F072x8, STM32F072xB |
| stm32f078xx.h | STM32F078xx |
| stm32f091xc.h | STM32F091xB, STM32F091xC |
| stm32f098xx.h | STM32F098xx |
Карта микроконтроллеров семейства с распиновками — на странице STM32F0.
Частые вопросы
Какой заголовок CMSIS нужен для STM32F030F4?
stm32f030x6.h: у STM32F0 заголовки делятся по линейке и объёму памяти. STM32F030 описан в RM0360, его регистры почти совпадают с регистрами STM32F031 на этой странице.
Почему у STM32F0 нет регистра USART_SR?
В STM32F0 стоит USART нового поколения: состояние — в USART_ISR, сброс флагов — записью в USART_ICR, приём и передача — в отдельных регистрах RDR и TDR. Код для STM32F1 и F4 на регистрах USART нужно переписывать.
Источники
- STMicroelectronics. RM0091: Reference manual (Rev 10) — описания регистров, назначение полей и значения после сброса
- STMicroelectronics. cmsis-device-f0 v2.3.8: заголовки CMSIS stm32f031x6.h, stm32f038xx.h, stm32f042x6.h, stm32f048xx.h, stm32f051x8.h, stm32f058xx.h, stm32f071xb.h, stm32f072xb.h, stm32f078xx.h, stm32f091xc.h, stm32f098xx.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0
Нашли ошибку в регистрах?