git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@13860 27425a3e-05d8-49a3-a47f-9c15f0e5edd8
This commit is contained in:
Giovanni Di Sirio 2020-09-20 07:53:48 +00:00
parent 5a80fa2049
commit 24ac5185af
2 changed files with 26 additions and 22 deletions

View File

@ -62,36 +62,37 @@
* @api
*/
void extiEnableGroup1(uint32_t mask, extimode_t mode) {
uint32_t cmask;
/* Masked out lines must not be touched by this driver.*/
osalDbgAssert((mask & STM32_EXTI_IMR1_MASK) == 0U, "fixed lines");
/* Mask including only configurable lines.*/
cmask = mask & ~STM32_EXTI_IMR1_MASK;
if ((mode & EXTI_MODE_EDGES_MASK) == 0U) {
/* Disabling channels.*/
EXTI->IMR1 &= ~mask;
EXTI->EMR1 &= ~mask;
EXTI->RTSR1 &= ~mask;
EXTI->FTSR1 &= ~mask;
EXTI->RTSR1 &= ~cmask;
EXTI->FTSR1 &= ~cmask;
#if STM32_EXTI_SEPARATE_RF == FALSE
EXTI->PR1 = mask;
EXTI->PR1 = cmask;
#else
EXTI->RPR1 = mask;
EXTI->FPR1 = mask;
EXTI->RPR1 = cmask;
EXTI->FPR1 = cmask;
#endif
}
else {
/* Programming edge registers.*/
if (mode & EXTI_MODE_RISING_EDGE) {
EXTI->RTSR1 |= mask;
EXTI->RTSR1 |= cmask;
}
else {
EXTI->RTSR1 &= ~mask;
EXTI->RTSR1 &= ~cmask;
}
if (mode & EXTI_MODE_FALLING_EDGE) {
EXTI->FTSR1 |= mask;
EXTI->FTSR1 |= cmask;
}
else {
EXTI->FTSR1 &= ~mask;
EXTI->FTSR1 &= ~cmask;
}
/* Programming interrupt and event registers.*/
@ -116,36 +117,37 @@ void extiEnableGroup1(uint32_t mask, extimode_t mode) {
* @api
*/
void extiEnableGroup2(uint32_t mask, extimode_t mode) {
uint32_t cmask;
/* Masked out lines must not be touched by this driver.*/
osalDbgAssert((mask & STM32_EXTI_IMR2_MASK) == 0U, "fixed lines");
/* Mask including only configurable lines.*/
cmask = mask & ~STM32_EXTI_IMR1_MASK;
if ((mode & EXTI_MODE_EDGES_MASK) == 0U) {
/* Disabling channels.*/
EXTI->IMR2 &= ~mask;
EXTI->EMR2 &= ~mask;
EXTI->RTSR2 &= ~mask;
EXTI->FTSR2 &= ~mask;
EXTI->RTSR2 &= ~cmask;
EXTI->FTSR2 &= ~cmask;
#if STM32_EXTI_SEPARATE_RF == FALSE
EXTI->PR2 = mask;
EXTI->PR2 = cmask;
#else
EXTI->RPR2 = mask;
EXTI->FPR2 = mask;
EXTI->RPR2 = cmask;
EXTI->FPR2 = cmask;
#endif
}
else {
/* Programming edge registers.*/
if (mode & EXTI_MODE_RISING_EDGE) {
EXTI->RTSR2 |= mask;
EXTI->RTSR2 |= cmask;
}
else {
EXTI->RTSR2 &= ~mask;
EXTI->RTSR2 &= ~cmask;
}
if (mode & EXTI_MODE_FALLING_EDGE) {
EXTI->FTSR2 |= mask;
EXTI->FTSR2 |= cmask;
}
else {
EXTI->FTSR2 &= ~mask;
EXTI->FTSR2 &= ~cmask;
}
/* Programming interrupt and event registers.*/

View File

@ -117,6 +117,8 @@
MEMS Accelerometers.
- NEW: Safer messages mechanism for sandboxes (to be backported to 20.3.1).
- NEW: Added latency measurement test application.
- FIX: Fixed STM32 EXTIv1 driver unable to enable/disable fixed lines
(bug #1123)(backported to 20.3.3)(backported to 19.1.5).
- FIX: Fixed incorrect STM32 iWDG initialization in windowed mode (bug #1122)
(backported to 20.3.3)(backported to 19.1.5).
- FIX: Fixed ignored HSIDIV setting on STM32G0xx (bug #1121)