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:
@@ -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);
|
||||
}
|
@@ -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);
|
||||
|
@@ -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 {
|
||||
|
@@ -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;
|
||||
}
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user