/*** * @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__