Core code cleanup (#206)

* add delay function
* todo about delay_isr
* remove arduino defines and fix all apps to use core-api/hal-api
* delay for local target
* remove warnings of task_equal
* fix BSP_SD_Init
* fix USBD_static
* grio read constant pointer to gpio
* add TODO about ISR context
* const void* arg for pubsub api
* mark unused functions
* app pointers now pointed to constant apps
* fix printf format
* fix "unused" warnings in local target
* fix const pin read in local target
* fix int to pointer warnings in local target
* power read mutex error fix
* delete old makefile
* add -werror

Co-authored-by: Aleksandr Kutuzov <aku@plooks.com>
Co-authored-by: aanper <mail@s3f.ru>
This commit is contained in:
DrZlo13
2020-10-29 10:58:19 +03:00
committed by GitHub
parent f9b6440f7f
commit 979af6c165
40 changed files with 175 additions and 424 deletions

View File

@@ -1,4 +1,6 @@
#include "api-hal-delay.h"
#include "assert.h"
#include "cmsis_os2.h"
void delay_us_init_DWT(void) {
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
@@ -6,9 +8,17 @@ void delay_us_init_DWT(void) {
DWT->CYCCNT = 0U;
}
void delay_us(float time) {
void delay_us(float microseconds) {
uint32_t start = DWT->CYCCNT;
uint32_t time_ticks = time * (SystemCoreClock / 1000000);
uint32_t time_ticks = microseconds * (SystemCoreClock / 1000000.0f);
while((DWT->CYCCNT - start) < time_ticks) {
};
}
// cannot be used in ISR
// TODO add delay_ISR variant
void delay(float milliseconds) {
uint32_t ticks = milliseconds / (1000.0f / osKernelGetTickFreq());
osStatus_t result = osDelay(ticks);
assert(result == osOK);
}

View File

@@ -1,5 +1,6 @@
#pragma once
#include "main.h"
void delay_us(float time);
void delay_us_init_DWT(void);
void delay(float milliseconds);
void delay_us(float microseconds);
void delay_us_init_DWT(void);

View File

@@ -52,7 +52,7 @@ static inline void hal_gpio_write(GpioPin* gpio, bool state) {
}
// read value from GPIO, false = LOW, true = HIGH
static inline bool hal_gpio_read(GpioPin* gpio) {
static inline bool hal_gpio_read(const GpioPin* gpio) {
if((gpio->port->IDR & gpio->pin) != 0x00U) {
return true;
} else {

View File

@@ -1,5 +1,5 @@
#include "api-hal-task.h"
#include "cmsis_os.h"
#include "api-hal-task.h"
//-----------------------------cmsis_os2.c-------------------------------
// helpers to get isr context
@@ -51,4 +51,9 @@
bool task_is_isr_context(void) {
return IS_IRQ();
}
bool task_equal(TaskHandle_t a, TaskHandle_t b) {
if(a == NULL || b == NULL) return false;
return a == b;
}

View File

@@ -1,5 +1,7 @@
#pragma once
#include "main.h"
#include <cmsis_os.h>
#include <stdbool.h>
bool task_is_isr_context(void);
bool task_equal(TaskHandle_t a, TaskHandle_t b);
bool task_is_isr_context(void);