2022-03-28 17:19:25 +08:00

78 lines
1.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "wm_touch.h"
// 在使用TOUCH功能时TOUCH0PA7必须复用为TOUCH功能不可以作为其他功能
HAL_StatusTypeDef HAL_TOUCH_Init(TOUCH_HandleTypeDef *htouch)
{
int i;
if (htouch == NULL)
{
return HAL_ERROR;
}
assert_param(IS_TOUCH_INSTANCE(htouch->Instance));
assert_param(IS_TOUCH_CHANNELS(htouch->Init.Channel));
assert_param(IS_TOUCH_WINDOW(htouch->Init.Window));
assert_param(IS_TOUCH_SCANPERIOD(htouch->Init.ScanPeriod));
HAL_TOUCH_MspInit(htouch);
WRITE_REG(htouch->Instance->CR, 0);
WRITE_REG(htouch->Instance->IE_IF, 0x0000FFFF);
for (i = 0; i < 16; i++)
{
if (htouch->Init.Channel & (1 << i))
{
assert_param(IS_TOUCH_THRESHOLD(htouch->Init.Threshold[i]));
MODIFY_REG(*((&(htouch->Instance->CH0CR)) + i), TOUCH_CH0CR_THRESHOLD, htouch->Init.Threshold[i]);
if (htouch->Init.Irq_en & (1 << i))
{
SET_BIT(htouch->Instance->IE_IF, (1 << (16 + i)));
}
}
}
WRITE_REG(htouch->Instance->CR, ((htouch->Init.Channel << TOUCH_CR_CH_SEL_Pos) |
(htouch->Init.ScanPeriod << TOUCH_CR_SCAN_PERIOD_Pos) |
(htouch->Init.Window << TOUCH_CR_CAPDET_CNT_Pos) |
TOUCH_CR_EN));
return HAL_OK;
}
HAL_StatusTypeDef HAL_TOUCH_DeInit(TOUCH_HandleTypeDef *htouch)
{
if (htouch == NULL)
{
return HAL_ERROR;
}
CLEAR_BIT(htouch->Instance->CR, TOUCH_CR_EN);
HAL_TOUCH_MspDeInit(htouch);
return HAL_OK;
}
__attribute__((weak)) void HAL_TOUCH_MspInit(TOUCH_HandleTypeDef *htouch)
{
UNUSED(htouch);
}
__attribute__((weak)) void HAL_TOUCH_MspDeInit(TOUCH_HandleTypeDef *htouch)
{
UNUSED(htouch);
}
__attribute__((weak)) void HAL_TOUCH_Callback(TOUCH_HandleTypeDef *htouch, uint16_t Flag)
{
UNUSED(htouch);
}
void HAL_TOUCH_IRQHandler(TOUCH_HandleTypeDef *htouch)
{
uint32_t flag = __HAL_TOUCH_GET_FLAG(htouch);
if (flag != RESET)
{
__HAL_TOUCH_CLEAR_IT(htouch, flag);
HAL_TOUCH_Callback(htouch, flag & TOUCH_IE_IF_FLAG);
}
}