diff options
Diffstat (limited to 'src/stm/stm32l.h')
| -rw-r--r-- | src/stm/stm32l.h | 33 | 
1 files changed, 29 insertions, 4 deletions
| diff --git a/src/stm/stm32l.h b/src/stm/stm32l.h index 0bc7483e..cb66df6c 100644 --- a/src/stm/stm32l.h +++ b/src/stm/stm32l.h @@ -855,10 +855,7 @@ isr(tim7)  struct stm_syscfg {  	vuint32_t	memrmp;  	vuint32_t	pmc; -	vuint32_t	exticr1; -	vuint32_t	exticr2; -	vuint32_t	exticr3; -	vuint32_t	exticr4; +	vuint32_t	exticr[4];  };  extern struct stm_syscfg stm_syscfg; @@ -871,6 +868,34 @@ extern struct stm_syscfg stm_syscfg;  #define STM_SYSCFG_PMC_USB_PU		0 +#define STM_SYSCFG_EXTICR_PA		0 +#define STM_SYSCFG_EXTICR_PB		1 +#define STM_SYSCFG_EXTICR_PC		2 +#define STM_SYSCFG_EXTICR_PD		3 +#define STM_SYSCFG_EXTICR_PE		4 +#define STM_SYSCFG_EXTICR_PH		5 + +static inline void +stm_exticr_set(struct stm_gpio *gpio, int pin) { +	uint8_t	reg = pin >> 2; +	uint8_t	shift = (pin & 3) << 2; +	uint8_t	val = 0; + +	if (gpio == &stm_gpioa) +		val = STM_SYSCFG_EXTICR_PA; +	else if (gpio == &stm_gpiob) +		val = STM_SYSCFG_EXTICR_PB; +	else if (gpio == &stm_gpioc) +		val = STM_SYSCFG_EXTICR_PC; +	else if (gpio == &stm_gpiod) +		val = STM_SYSCFG_EXTICR_PD; +	else if (gpio == &stm_gpioe) +		val = STM_SYSCFG_EXTICR_PE; + +	stm_syscfg.exticr[reg] = (stm_syscfg.exticr[reg] & ~(0xf << shift)) | val << shift; +} + +  struct stm_dma_channel {  	vuint32_t	ccr;  	vuint32_t	cndtr; | 
