если без функций. А переинициализировать можно и по старинке...
#include "c:\Alex\Project\MyLib\Inc\bin2int.h"
#include "C:\Alex\Project\MyLib\STM32\StdPerDrv\inc\stm32f4xx.h"
// назначение входа
#define mIN 00
#define mOU 01
#define mAF 10
#define mAN 11
// push-pull - open drain
#define oPP 0
#define oOD 1
// частота
#define s02 00
#define s25 01
#define s50 10
#define sto 11
// pop up/down
#define dNO 00
#define dPU 01
#define dPD 10
// alternate function
#define sdIO 1100 // SDIO
#define USBp 1010 // USB FS
#define SWDp 0000 // SWDIO
#define noAF 0000 // нет
#define UARa 0111 // USART2
#define UARb 0111 // USART3
#define UARc 0111 // USART1
#define UARd 1000 // USART6
#define SPIa 0101 // SPI1
#define SPIb 0101 // SPI2
#define I2Ca 0100 // I2C1
#define I2Cb 0100 // I2C2
#define TIMa 0001 // -- TIM1
#define TIMb 0010 // -- TIM3
/** Описание всех выводов в MB_V1.ods */
void Dev_Init(void){
{ // Тики на AHB1
//
// D D
// M M C
// A A +-CCMDATARAM R GPIO
// 2 1 | +BKPSRAM C I H G F E D C B A
RCC->AHB1ENR |= B1B32(0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1); // даёт тики на GPIO Px
/// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
}
...
...
void Pin_Init(void) { // 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
{ // USARTa -- USART2 . . . . . . . . . . . . A A A A
{ // RX -- PA3 A
#define aPA3 UARa
#define oPA3 oPP
#define sPA3 s25
#define dPA3 dNO
#define mPA3 mAF
}
{ // TX -- PA2 A
#define aPA2 UARa
#define oPA2 oPP
#define sPA2 s25
#define dPA2 dNO
#define mPA2 mAF
}
{ // CTS -- PA0 A
#define aPA0 UARa
#define oPA0 oPP
#define sPA0 s25
#define dPA0 dNO
#define mPA0 mAF
}
{ // RTS -- PA1 A
#define aPA1 UARa
#define oPA1 oPP
#define sPA1 s25
#define dPA1 dNO
#define mPA1 mAF
}
}
{ // USARTb -- USART3 . . . D D . D D . . . . . . . .
{ // RX -- PD9 D
#define aPD9 UARb
...
...
{ // присвоения для порта A
GPIOA->AFR[0] |= B4B32(aPA7, aPA6, aPA5, aPA4, aPA3, aPA2, aPA1,aPA0);
GPIOA->AFR[1] |= B4B32(aPA15,aPA14,aPA13,aPA12,aPA11,aPA10,aPA9,aPA8);
GPIOA->OTYPER |= B1B16(oPA15,oPA14,oPA13,oPA12,oPA11,oPA10,oPA9,oPA8,oPA7,oPA6,oPA5,oPA4,oPA3,oPA2,oPA1,oPA0);
GPIOA->OSPEEDR |= B2B32(sPA15,sPA14,sPA13,sPA12,sPA11,sPA10,sPA9,sPA8,sPA7,sPA6,sPA5,sPA4,sPA3,sPA2,sPA1,sPA0);
...
...