committed by
Krzysiek Egzmont
parent
e7a21c470f
commit
2a75f8a9be
@@ -16,13 +16,15 @@
|
||||
|
||||
#include <stdio.h> // NULL
|
||||
|
||||
#include "audio.h"
|
||||
#include "../audio.h"
|
||||
#include "../bsp/dp32g030/gpio.h"
|
||||
#include "../bsp/dp32g030/portcon.h"
|
||||
|
||||
#include "bk4819.h"
|
||||
#include "bsp/dp32g030/gpio.h"
|
||||
#include "bsp/dp32g030/portcon.h"
|
||||
#include "driver/gpio.h"
|
||||
#include "driver/system.h"
|
||||
#include "driver/systick.h"
|
||||
#include "gpio.h"
|
||||
#include "system.h"
|
||||
#include "systick.h"
|
||||
|
||||
|
||||
#ifndef ARRAY_SIZE
|
||||
#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
|
||||
@@ -127,7 +129,6 @@ static uint16_t BK4819_ReadU16(void)
|
||||
PORTCON_PORTC_IE = (PORTCON_PORTC_IE & ~PORTCON_PORTC_IE_C2_MASK) | PORTCON_PORTC_IE_C2_BITS_ENABLE;
|
||||
GPIOC->DIR = (GPIOC->DIR & ~GPIO_DIR_2_MASK) | GPIO_DIR_2_BITS_INPUT;
|
||||
SYSTICK_DelayUs(1);
|
||||
|
||||
Value = 0;
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
|
@@ -117,19 +117,13 @@ KEY_Code_t KEYBOARD_Poll(void)
|
||||
GPIOA->DATA &= keyboard[j].set_to_zero_mask;
|
||||
|
||||
// Read all 4 GPIO pins at once .. with de-noise, max of 8 sample loops
|
||||
for (i = 0, k = 0, reg = 0; i < 3 && k < 8; i++, k++)
|
||||
{
|
||||
uint16_t reg2;
|
||||
|
||||
for (i = 0, k = 0, reg = 0; i < 3 && k < 8; i++, k++) {
|
||||
SYSTICK_DelayUs(1);
|
||||
|
||||
reg2 = GPIOA->DATA;
|
||||
if (reg != reg2)
|
||||
{ // noise
|
||||
reg = reg2;
|
||||
i = 0;
|
||||
}
|
||||
uint16_t reg2 = GPIOA->DATA;
|
||||
i *= reg == reg2;
|
||||
reg = reg2;
|
||||
}
|
||||
|
||||
if (i < 3)
|
||||
break; // noise is too bad
|
||||
|
||||
|
@@ -14,10 +14,10 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "bsp/dp32g030/pmu.h"
|
||||
#include "bsp/dp32g030/syscon.h"
|
||||
#include "driver/system.h"
|
||||
#include "driver/systick.h"
|
||||
#include "../bsp/dp32g030/pmu.h"
|
||||
#include "../bsp/dp32g030/syscon.h"
|
||||
#include "system.h"
|
||||
#include "systick.h"
|
||||
|
||||
void SYSTEM_DelayMs(uint32_t Delay)
|
||||
{
|
||||
|
@@ -15,8 +15,8 @@
|
||||
*/
|
||||
|
||||
#include "ARMCM0.h"
|
||||
#include "driver/systick.h"
|
||||
#include "misc.h"
|
||||
#include "systick.h"
|
||||
#include "../misc.h"
|
||||
|
||||
// 0x20000324
|
||||
static uint32_t gTickMultiplier;
|
||||
@@ -29,17 +29,21 @@ void SYSTICK_Init(void)
|
||||
|
||||
void SYSTICK_DelayUs(uint32_t Delay)
|
||||
{
|
||||
const uint32_t ticks = Delay * gTickMultiplier;
|
||||
uint32_t i = 0;
|
||||
uint32_t Start = SysTick->LOAD;
|
||||
uint32_t Previous = SysTick->VAL;
|
||||
const uint32_t ticks = Delay * gTickMultiplier;
|
||||
uint32_t elapsed_ticks = 0;
|
||||
uint32_t Start = SysTick->LOAD;
|
||||
uint32_t Previous = SysTick->VAL;
|
||||
do {
|
||||
uint32_t Current;
|
||||
uint32_t Delta;
|
||||
while ((Current = SysTick->VAL) == Previous) {}
|
||||
Delta = (Current < Previous) ? -Current : Start - Current;
|
||||
i += Delta + Previous;
|
||||
Previous = Current;
|
||||
} while (i < ticks);
|
||||
}
|
||||
|
||||
do {
|
||||
Current = SysTick->VAL;
|
||||
} while (Current == Previous);
|
||||
|
||||
uint32_t Delta = ((Current < Previous) ? - Current : Start - Current);
|
||||
|
||||
elapsed_ticks += Delta + Previous;
|
||||
|
||||
Previous = Current;
|
||||
} while (elapsed_ticks < ticks);
|
||||
}
|
||||
|
Reference in New Issue
Block a user