epm/User/lib/inc/osel_arch.h

88 lines
1.6 KiB
C

/***
* @Author: shenghao.xu
* @Date: 2023-04-04 08:13:11
* @LastEditors: shenghao.xu
* @LastEditTime: 2023-04-04 08:16:58
* @Description:
* @email:545403892@qq.com
* @Copyright (c) 2023 by shenghao.xu, All Rights Reserved.
*/
#ifndef __OSEL_ARCH_H__
#define __OSEL_ARCH_H__
#include "malloc.h"
#include "lib.h"
#define hal_int_state_t char
#ifdef STM32
#include "stm32l0xx.h"
#include "stm32l0xx_hal.h"
#define HAL_ENTER_CRITICAL(s) \
s = s; \
__ASM volatile("cpsid i");
#define HAL_EXIT_CRITICAL(s) \
__ASM volatile("cpsie i");
#else
#define HAL_ENTER_CRITICAL(s)
#define HAL_EXIT_CRITICAL(s)
#endif
#define osel_memset _memset
#define osel_memcpy memcpyL
#define osel_memcpyr memcpyR
#define osel_reverse _reverse
#define osel_mem_alloc _malloc
#define osel_mem_free _free
static inline void *_malloc(uint32_t size)
{
return mymalloc(SRAMIN, size);
}
static inline void _free(void *ptr)
{
myfree(SRAMIN, ptr);
}
static inline void _memset(uint8_t *dst, uint8_t value, uint16_t size)
{
while (size--)
{
*dst++ = value;
}
}
static inline void memcpyL(uint8_t *dst, const uint8_t *src, uint16_t size)
{
while (size--)
{
*dst++ = *src++;
}
}
static inline void memcpyR(uint8_t *dst, const uint8_t *src, uint16_t size)
{
dst = dst + (size - 1);
while (size--)
{
*dst-- = *src++;
}
}
// 字节数组反序
static inline void _reverse(uint8_t *buf, uint16_t len)
{
uint8_t temp;
uint16_t i;
for (i = 0; i < len / 2; i++)
{
temp = buf[i];
buf[i] = buf[len - i - 1];
buf[len - i - 1] = temp;
}
}
#endif // __OSEL_ARCH_H__