Compare commits
1 commit
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
533bad146f |
2 changed files with 10 additions and 8 deletions
|
|
@ -236,9 +236,9 @@ struct gpio {
|
||||||
uint32_t hdrv; /* 3C: Huge current control */
|
uint32_t hdrv; /* 3C: Huge current control */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* 0-1: MODE, 2: OTYPE, 3-4:ODRV, 5-6:PUPD, 7:OUTPUT_LEVEL */
|
/* 0-1: MODE, 2: OTYPE, 3-5:ODRV+HDRV, 6-7:PUPD, 8:OUTPUT_LEVEL */
|
||||||
#define GPI_analog 0x3u
|
#define GPI_analog 0x3u
|
||||||
#define GPI(pupd) (0x0u|((pupd)<<5))
|
#define GPI(pupd) (0x0u|((pupd)<<6))
|
||||||
#define PUPD_none 0
|
#define PUPD_none 0
|
||||||
#define PUPD_up 1
|
#define PUPD_up 1
|
||||||
#define PUPD_down 2
|
#define PUPD_down 2
|
||||||
|
|
@ -246,14 +246,14 @@ struct gpio {
|
||||||
#define GPI_pull_down GPI(PUPD_down)
|
#define GPI_pull_down GPI(PUPD_down)
|
||||||
#define GPI_pull_up GPI(PUPD_up)
|
#define GPI_pull_up GPI(PUPD_up)
|
||||||
|
|
||||||
#define GPO_pushpull(speed,level) (0x1u|((speed)<<3)|((level)<<7))
|
#define GPO_pushpull(speed,level) (0x1u|((speed)<<3)|((level)<<8))
|
||||||
#define GPO_opendrain(speed,level) (0x5u|((speed)<<3)|((level)<<7))
|
#define GPO_opendrain(speed,level) (0x5u|((speed)<<3)|((level)<<8))
|
||||||
#define AFI(pupd) (0x2u|((pupd)<<5))
|
#define AFI(pupd) (0x2u|((pupd)<<6))
|
||||||
#define AFO_pushpull(speed) (0x2u|((speed)<<3))
|
#define AFO_pushpull(speed) (0x2u|((speed)<<3))
|
||||||
#define AFO_opendrain(speed) (0x6u|((speed)<<3))
|
#define AFO_opendrain(speed) (0x6u|((speed)<<3))
|
||||||
#define _2MHz 0
|
#define _2MHz 0
|
||||||
#define _10MHz 0
|
#define _10MHz 2
|
||||||
#define _50MHz 0
|
#define _50MHz 1
|
||||||
#define LOW 0
|
#define LOW 0
|
||||||
#define HIGH 1
|
#define HIGH 1
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -98,11 +98,13 @@ void stm32_init(void)
|
||||||
|
|
||||||
void gpio_configure_pin(GPIO gpio, unsigned int pin, unsigned int mode)
|
void gpio_configure_pin(GPIO gpio, unsigned int pin, unsigned int mode)
|
||||||
{
|
{
|
||||||
gpio_write_pin(gpio, pin, mode >> 7);
|
gpio_write_pin(gpio, pin, mode >> 8);
|
||||||
gpio->moder = (gpio->moder & ~(3<<(pin<<1))) | ((mode&3)<<(pin<<1));
|
gpio->moder = (gpio->moder & ~(3<<(pin<<1))) | ((mode&3)<<(pin<<1));
|
||||||
mode >>= 2;
|
mode >>= 2;
|
||||||
gpio->otyper = (gpio->otyper & ~(1<<pin)) | ((mode&1)<<pin);
|
gpio->otyper = (gpio->otyper & ~(1<<pin)) | ((mode&1)<<pin);
|
||||||
mode >>= 1;
|
mode >>= 1;
|
||||||
|
gpio->hdrv = (gpio->hdrv & ~(1<<pin)) | ((mode&1)<<pin);
|
||||||
|
mode >>= 1;
|
||||||
gpio->odrvr = (gpio->odrvr & ~(3<<(pin<<1))) | ((mode&3)<<(pin<<1));
|
gpio->odrvr = (gpio->odrvr & ~(3<<(pin<<1))) | ((mode&3)<<(pin<<1));
|
||||||
mode >>= 2;
|
mode >>= 2;
|
||||||
gpio->pupdr = (gpio->pupdr & ~(3<<(pin<<1))) | ((mode&3)<<(pin<<1));
|
gpio->pupdr = (gpio->pupdr & ~(3<<(pin<<1))) | ((mode&3)<<(pin<<1));
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue