This commit is contained in:
2026-03-20 21:19:04 +08:00
parent 90c3d919df
commit 9d3b4b836f
247 changed files with 22127 additions and 30305 deletions

View File

@@ -1,121 +0,0 @@
#include "../main/SystemInclude.h"
//void XLINK_Init(XLINK0_INPUT_SOURCE_t input_src , XLINK0_OUTPUT_PORT_t output_src)
/**------------------------------------------------------------------------
* @brief <20><><EFBFBD><EFBFBD> LPTIM ͨ<><CDA8> XLINK <20><><EFBFBD><EFBFBD> ADC ת<><D7AA>
* @param lptimer_x: LPTIM ʵ<><CAB5> (LPTIM1 <20><> LPTIM2)
* @param ADCx: ADC ʵ<><CAB5> (ADC_0 <20><> ADC_1)
* @note <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> LPTIM <20><><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>ͨ<EFBFBD><CDA8> XLINK0 ֱ<><D6B1>·<EFBFBD>ɵ<EFBFBD> ADC Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
* <20><><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>ÿ<EFBFBD><C3BF> LPTIM <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>¼<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD> ADC <20><><EFBFBD><EFBFBD>һ<EFBFBD>ε<EFBFBD><CEB5><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
* @example:
* XLINK_LPTIM_To_ADC_Trigger(LPTIM1, ADC_0); // LPTIM1 <20><><EFBFBD><EFBFBD> ADC0
* XLINK_LPTIM_To_ADC_Trigger(LPTIM2, ADC_1); // LPTIM2 <20><><EFBFBD><EFBFBD> ADC1
**/
void XLINK_LPTIM_To_ADC_Trigger(LPTIM_TypeDef *lptimer_x, ADC_ID_t ADCx)
{
uint32_t input_src, output_src;
XLINK_InitTypeDef XLINK_InitStructure;
/* <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7>Լ<EFBFBD><D4BC><EFBFBD> */
if (lptimer_x != LPTIM1 && lptimer_x != LPTIM2) return;
if (ADCx != ADC_0 && ADCx != ADC_1) return;
/* 1. <20><><EFBFBD><EFBFBD>LPTIMERѡ<52><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ */
/* 2. <20><><EFBFBD><EFBFBD>ADCѡ<43><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ */
// if(lptimer_x == LPTIM1) input_src = XLINK0_INPUT_LPTIM1_INT; //XLINK0_INPUT_LPTIM1_INT XLINK0_INPUT_XB_IN2
// else if(lptimer_x == LPTIM2) input_src = XLINK0_INPUT_LPTIM2_INT;
// else return;
// if(ADCx == ADC_0) output_src = XLINK0_OUTPUT_ADC0_TRIG;
// else if(ADCx == ADC_1) output_src = XLINK0_OUTPUT_ADC1_TRIG;
// else return;
/* <20><><EFBFBD><EFBFBD> LPTIM ѡ<><D1A1> XLINK0 <20><><EFBFBD><EFBFBD>Դ */
input_src = (lptimer_x == LPTIM1) ? XLINK0_INPUT_LPTIM1_INT : XLINK0_INPUT_LPTIM2_INT;
/* <20><><EFBFBD><EFBFBD> ADC ѡ<><D1A1> XLINK0 <20><><EFBFBD><EFBFBD>Դ */
output_src = (ADCx == ADC_0) ? XLINK0_OUTPUT_ADC0_TRIG : XLINK0_OUTPUT_ADC1_TRIG;
/* 3. <20><><EFBFBD><EFBFBD>XLINK·<4B><C2B7> */ // XLINK0_INPUT_PMU
XLINK_InitStructure.XLink_0_Input = input_src;
XLINK_InitStructure.XLink_0_Output = output_src;
LHL_XLINK_Init(&XLINK_InitStructure);
}
/**------------------------------------------------------------------------
* @brief <20><><EFBFBD><EFBFBD> RTC <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8> XLINK <20><><EFBFBD><EFBFBD> ADC ת<><D7AA>
* @param ADCx: ADC ʵ<><CAB5> (ADC_0 <20><> ADC_1)
* @note <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD> RTC <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>ͨ<EFBFBD><CDA8> XLINK0 ֱ<><D6B1>·<EFBFBD>ɵ<EFBFBD> ADC Ӳ<><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
* <20><><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>ÿ<EFBFBD><C3BF> RTC <20><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD> ADC <20><><EFBFBD><EFBFBD>һ<EFBFBD>ε<EFBFBD><CEB5><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
* @example:
* XLINK_RTC_ALARM_To_ADC_Trigger(ADC_0); // RTC <20><><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD> ADC0
* XLINK_RTC_ALARM_To_ADC_Trigger(ADC_1); // RTC <20><><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD> ADC1
**/
void XLINK_RTC_ALARM_To_ADC_Trigger(ADC_ID_t ADCx)
{
uint32_t input_src, output_src;
XLINK_InitTypeDef XLINK_InitStructure;
/* <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7>Լ<EFBFBD><D4BC><EFBFBD> */
if (ADCx != ADC_0 && ADCx != ADC_1) return;
/* 1. ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ */
input_src = XLINK0_INPUT_RTC_ALARM;
/* 2. <20><><EFBFBD><EFBFBD>ADCѡ<43><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ */
output_src = (ADCx == ADC_0) ? XLINK0_OUTPUT_ADC0_TRIG : XLINK0_OUTPUT_ADC1_TRIG;
/* 3. <20><><EFBFBD><EFBFBD>XLINK·<4B><C2B7> */
XLINK_InitStructure.XLink_0_Input = input_src;
XLINK_InitStructure.XLink_0_Output = output_src;
LHL_XLINK_Init(&XLINK_InitStructure);
}
/**------------------------------------------------------------------------
* @brief <20><><EFBFBD><EFBFBD> GPIO <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8> XLINK <20><><EFBFBD><EFBFBD> ADC<44><43>֧<EFBFBD><D6A7>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
* @param GPIOx: GPIO <20>˿<EFBFBD> (pGPIO0/pGPIO1/pGPIO2)
* @param pin_pos: <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> (0~3<><33><EFBFBD><EFBFBD>֧<EFBFBD><D6A7> XB_IN <20><><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD>)
* @param ADCx: ADC_0 <20><> ADC_1
* @param invert: ENABLE ȡ<><C8A1><EFBFBD><EFBFBD>DISABLE <20><>ȡ<EFBFBD><C8A1>
* @note
* - <20><>ȡ<EFBFBD><C8A1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> GPIO <20><> XB_IN <20>ź<EFBFBD>ֱ<EFBFBD><D6B1>ͨ<EFBFBD><CDA8> XLINK0 ·<>ɵ<EFBFBD> ADC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* - ȡ<><C8A1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8> XLINK1 <20><><EFBFBD>ź<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LU_OUT0<54><30><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8> XLINK0 ·<>ɵ<EFBFBD> ADC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸı<DAB8><C4B1>źű<C5BA><C5B1>أ<EFBFBD><D8A3><EFBFBD><EFBFBD>½<EFBFBD><C2BD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><D8A3><EFBFBD>ƥ<EFBFBD><C6A5> ADC <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
* @example:
* XLINK_GPIO_To_ADC_Trigger(pGPIO0, 3, ADC_1, ENABLE); // P0.3 ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADC1
* XLINK_GPIO_To_ADC_Trigger(pGPIO0, 3, ADC_1, DISABLE); // ֱ<>Ӵ<EFBFBD><D3B4><EFBFBD> ADC1
**/
void XLINK_GPIO_To_ADC_Trigger(GPIO_TypeDef *GPIOx, uint8_t pin_pos, ADC_ID_t ADCx, FunctionalState invert)
{
/* <20><>֧<EFBFBD><D6A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0~3 */
if (pin_pos > 3) return;
/* <20><><EFBFBD><EFBFBD> XLINK <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD>٣<EFBFBD> */
uint32_t xlink0_input = XLINK0_INPUT_XB_IN0 + pin_pos;
uint32_t xlink1_input = XLINK1_INPUT_XB_IN0 + pin_pos;
/* <20><>ʼ<EFBFBD><CABC> GPIO Ϊ<><CEAA><EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD>Ϊ XB_IN<49><4E>AF ֵ<>̶<EFBFBD>Ϊ 6<><36> */
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.Pin = (1 << pin_pos);
GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
GPIO_InitStructure.Pull = GPIO_NOPULL;
GPIO_InitStructure.SchmittTrigger = ENABLE;
GPIO_InitStructure.Alternate = 6; // <20><><EFBFBD><EFBFBD> XB_IN <20><> AF ֵ<><D6B5>Ϊ 6 : GPIO0_1_AF_XB_IN1 GPIO0_2_AF_XB_IN2 GPIO0_3_AF_XB_IN3 GPIO1_0_AF_XB_IN0 .....
LHL_GPIO_Init(GPIOx, &GPIO_InitStructure);
if (invert == ENABLE) {
/* ȡ<><C8A1>·<EFBFBD><C2B7><EFBFBD><EFBFBD>XLINK1 ȡ<><C8A1> -> LU_OUT0 */
LHL_XLINK_InvertSingal((XLINK1_INPUT_SOURCE_t)xlink1_input, XLINK1_OUTPUT_LU_OUT0);
/* XLINK0 ·<><C2B7> LU_OUT0 <20><> ADC <20><><EFBFBD><EFBFBD> */
XLINK_InitTypeDef XLINK_InitStructure;
XLINK_InitStructure.XLink_0_Input = XLINK0_INPUT_LU_OUT0;
XLINK_InitStructure.XLink_0_Output = (ADCx == ADC_0) ? XLINK0_OUTPUT_ADC0_TRIG : XLINK0_OUTPUT_ADC1_TRIG;
LHL_XLINK_Init(&XLINK_InitStructure);
} else {
/* ֱ<><D6B1>·<EFBFBD><C2B7><EFBFBD><EFBFBD>XLINK0 ·<><C2B7> XB_IN <20><> ADC <20><><EFBFBD><EFBFBD> */
XLINK_InitTypeDef XLINK_InitStructure;
XLINK_InitStructure.XLink_0_Input = xlink0_input;
XLINK_InitStructure.XLink_0_Output = (ADCx == ADC_0) ? XLINK0_OUTPUT_ADC0_TRIG : XLINK0_OUTPUT_ADC1_TRIG;
LHL_XLINK_Init(&XLINK_InitStructure);
}
}