Add critical section functions for DMAs
This commit is contained in:
parent
f89fe12298
commit
6269cf969a
@ -91,6 +91,21 @@ void dma_reset(enum DmaPeriph dma, enum DmaChannel channel)
|
|||||||
regs->CPAR = 0;
|
regs->CPAR = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dma_exit_critical(enum DmaPeriph dma, enum DmaChannel channel)
|
||||||
|
{
|
||||||
|
switch (dma) {
|
||||||
|
case DMA_PERIPH_1:
|
||||||
|
nvic_enable(NVIC_IRQ_DMA1_CHANNEL1 + channel);
|
||||||
|
break;
|
||||||
|
case DMA_PERIPH_2:
|
||||||
|
nvic_enable(NVIC_IRQ_DMA2_CHANNEL1 + channel);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void dma_enable(enum DmaPeriph dma, enum DmaChannel channel)
|
void dma_enable(enum DmaPeriph dma, enum DmaChannel channel)
|
||||||
{
|
{
|
||||||
switch (dma) {
|
switch (dma) {
|
||||||
@ -112,6 +127,21 @@ void dma_enable(enum DmaPeriph dma, enum DmaChannel channel)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dma_enter_critical(enum DmaPeriph dma, enum DmaChannel channel)
|
||||||
|
{
|
||||||
|
switch (dma) {
|
||||||
|
case DMA_PERIPH_1:
|
||||||
|
nvic_disable(NVIC_IRQ_DMA1_CHANNEL1 + channel);
|
||||||
|
break;
|
||||||
|
case DMA_PERIPH_2:
|
||||||
|
nvic_disable(NVIC_IRQ_DMA2_CHANNEL1 + channel);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void dma_disable(enum DmaPeriph dma, enum DmaChannel channel)
|
void dma_disable(enum DmaPeriph dma, enum DmaChannel channel)
|
||||||
{
|
{
|
||||||
switch (dma) {
|
switch (dma) {
|
||||||
|
|||||||
@ -90,8 +90,12 @@ void dma_configure_mem2mem(enum DmaPeriph dma, enum DmaChannel channel,
|
|||||||
|
|
||||||
void dma_reset(enum DmaPeriph dma, enum DmaChannel channel);
|
void dma_reset(enum DmaPeriph dma, enum DmaChannel channel);
|
||||||
|
|
||||||
|
void dma_exit_critical(enum DmaPeriph dma, enum DmaChannel channel);
|
||||||
|
|
||||||
void dma_enable(enum DmaPeriph dma, enum DmaChannel channel);
|
void dma_enable(enum DmaPeriph dma, enum DmaChannel channel);
|
||||||
|
|
||||||
|
void dma_enter_critical(enum DmaPeriph dma, enum DmaChannel channel);
|
||||||
|
|
||||||
void dma_disable(enum DmaPeriph dma, enum DmaChannel channel);
|
void dma_disable(enum DmaPeriph dma, enum DmaChannel channel);
|
||||||
|
|
||||||
uint16_t dma_get_remaining(enum DmaPeriph dma, enum DmaChannel channe);
|
uint16_t dma_get_remaining(enum DmaPeriph dma, enum DmaChannel channe);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user