98 lines
4.1 KiB
C
98 lines
4.1 KiB
C
#ifndef __BSP_H__
|
||
#define __BSP_H__
|
||
|
||
#include "gpios.h"
|
||
#include "adcs.h"
|
||
#include "dacs.h"
|
||
#include "pwms.h"
|
||
#include "uarts.h"
|
||
#include "eeprom.h"
|
||
#include "spis.h"
|
||
#include "i2cs.h"
|
||
#include "iwdgs.h"
|
||
|
||
/***
|
||
* @brief 启用定时器时钟。
|
||
* @param {TIMx} TIMx:定时器外设寄存器地址。
|
||
* @return {void}
|
||
* @note: 此函数应在定时器相关初始化函数之后调用,以启用定时器的时钟。
|
||
*/
|
||
#define ENABLE_TIM(TIMx) \
|
||
do \
|
||
{ \
|
||
LL_TIM_EnableCounter(TIMx); \
|
||
LL_TIM_EnableIT_UPDATE(TIMx); \
|
||
} while (__LINE__ == -1);
|
||
|
||
#define DISABLE_TIM(TIMx) \
|
||
do \
|
||
{ \
|
||
LL_TIM_DisableCounter(TIMx); \
|
||
LL_TIM_DisableIT_UPDATE(TIMx); \
|
||
} while (__LINE__ == -1);
|
||
|
||
// 判断定时器的中断是否发生,为了方便使用,这里直接使用LL库的宏定义
|
||
#define IS_TIM_IT_FLAG(TIMx) (LL_TIM_IsActiveFlag_UPDATE(TIMx) == 1)
|
||
|
||
// 定时器中断处理
|
||
#define TIM_IRQ_HANDLER(TIMx) \
|
||
do \
|
||
{ \
|
||
if (LL_TIM_IsActiveFlag_CC1(TIMx) == SET) \
|
||
{ \
|
||
if (LL_TIM_IsEnabledIT_CC1(TIMx) == SET) \
|
||
{ \
|
||
LL_TIM_ClearFlag_CC1(TIMx); \
|
||
} \
|
||
} \
|
||
if (LL_TIM_IsActiveFlag_CC2(TIMx) == SET) \
|
||
{ \
|
||
if (LL_TIM_IsEnabledIT_CC2(TIMx) == SET) \
|
||
{ \
|
||
LL_TIM_ClearFlag_CC2(TIMx); \
|
||
} \
|
||
} \
|
||
if (LL_TIM_IsActiveFlag_CC3(TIMx) == SET) \
|
||
{ \
|
||
if (LL_TIM_IsEnabledIT_CC3(TIMx) == SET) \
|
||
{ \
|
||
LL_TIM_ClearFlag_CC3(TIMx); \
|
||
} \
|
||
} \
|
||
if (LL_TIM_IsActiveFlag_CC4(TIMx) == SET) \
|
||
{ \
|
||
if (LL_TIM_IsEnabledIT_CC4(TIMx) == SET) \
|
||
{ \
|
||
LL_TIM_ClearFlag_CC4(TIMx); \
|
||
} \
|
||
} \
|
||
if (LL_TIM_IsActiveFlag_UPDATE(TIMx) == SET) \
|
||
{ \
|
||
if (LL_TIM_IsEnabledIT_UPDATE(TIMx) == SET) \
|
||
{ \
|
||
LL_TIM_ClearFlag_UPDATE(TIMx); \
|
||
} \
|
||
} \
|
||
} while (0)
|
||
|
||
#define DMA_ClEAR_FLAG(DMAX, CHx, Flag) \
|
||
do \
|
||
{ \
|
||
if (LL_DMA_IsActiveFlag_TC##CHx(DMAX)) \
|
||
{ \
|
||
LL_DMA_ClearFlag_TC##CHx(DMAX); \
|
||
LL_DMA_ClearFlag_GI##CHx(DMAX); \
|
||
Flag = TRUE; \
|
||
} \
|
||
if (LL_DMA_IsActiveFlag_TE##CHx(DMAX)) \
|
||
{ \
|
||
LL_DMA_ClearFlag_TE##CHx(DMAX); \
|
||
} \
|
||
if (LL_DMA_IsActiveFlag_GI##CHx(DMAX)) \
|
||
{ \
|
||
LL_DMA_ClearFlag_GI##CHx(DMAX); \
|
||
} \
|
||
} while (__LINE__ == -1)
|
||
|
||
#endif // __BSP_H__
|