bluepill: working on header file
This commit is contained in:
parent
0ca0cb6167
commit
4be849722a
|
@ -0,0 +1,65 @@
|
|||
#ifndef __BLUEPILL_H__
|
||||
#define __BLUEPILL_H__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#define PORTA (volatile unsigned int *)0x40010800
|
||||
#define PORTB (volatile unsigned int *)0x40010c00
|
||||
#define PORTC (volatile unsigned int *)0x40011000
|
||||
#define PORTD (volatile unsigned int *)0x40011400
|
||||
#define PORTE (volatile unsigned int *)0x40011800
|
||||
|
||||
#define RCC (volatile unsigned int *)0x40021000
|
||||
|
||||
/*
|
||||
|
||||
40011000 CRL
|
||||
40011004 CRH
|
||||
40011008 IDR
|
||||
4001100c ODR
|
||||
40011010 BRR
|
||||
40011012 LCKR
|
||||
|
||||
*/
|
||||
typedef struct _GPIO {
|
||||
uint32_t CRL; /* configuration register low */
|
||||
uint32_t CRH; /* configuration register high */
|
||||
uint32_t IDR; /* input data register */
|
||||
uint32_t ODR; /* output data register */
|
||||
uint32_t BSRR; /* bit set / reset register */
|
||||
uint16_t BRR; /* reset register */
|
||||
uint32_t LCKR; /* locking register */
|
||||
} GPIO;
|
||||
|
||||
GPIO *GPIO_A = (GPIO *)PORTA;
|
||||
GPIO *GPIO_B = (GPIO *)PORTB;
|
||||
GPIO *GPIO_C = (GPIO *)PORTC;
|
||||
GPIO *GPIO_D = (GPIO *)PORTD;
|
||||
GPIO *GPIO_E = (GPIO *)PORTE;
|
||||
|
||||
const uint32_t OUTPUT_MAX_2MHZ = 2;
|
||||
const uint32_t OUTPUT_MAX_10MHZ = 1;
|
||||
const uint32_t OUTPUT_MAX_50MHZ = 3;
|
||||
const uint32_t OUTPUT_GPP = 0;
|
||||
const uint32_t OUTPUT_GOD = 1;
|
||||
const uint32_t OUTPUT_APP = 2;
|
||||
const uint32_t OUTPUT_AOD = 3;
|
||||
|
||||
void set_pin(GPIO *gpio, uint32_t pin) { gpio->BSRR |= ((1 << pin) << 16); }
|
||||
void clear_pin(GPIO *gpio, uint32_t pin) { gpio->BSRR |= (1 << pin); }
|
||||
void output_mode(GPIO *gpio, uint32_t pin, uint32_t mode, uint32_t max) {
|
||||
if (pin > 7) {
|
||||
pin = ((pin - 8) * 4);
|
||||
gpio->CRH |= (max << pin);
|
||||
gpio->CRH |= (mode << (pin + 2));
|
||||
}
|
||||
else {
|
||||
pin *= 4;
|
||||
gpio->CRL |= (max << pin);
|
||||
gpio->CRL |= (mode << (pin + 2));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endif /* __BLUEPILL_H__ */
|
||||
|
Loading…
Reference in New Issue