/**
 * @brief TMP-ADC采样内部温度传感器数据
 * @details 使用软件触发ADC1采样温度传感器并计算温度
 */
#include "lks32mc09x_lib.h"
volatile int32_t tmp = 0;
/**
 * @brief 主函数
 */
int main(void)
{
    ADC_InitTypeDef ADC_InitStruct;

    // 初始化ADC结构体
    ADC_StructInit(&ADC_InitStruct);

    // 配置ADC参数
    ADC_InitStruct.IE = ADC_IE_SF1;     // 禁用中断
    ADC_InitStruct.RE = 0;              // 禁用DMA请求
    ADC_InitStruct.NSMP = 0;            // 禁用两段采样
    ADC_InitStruct.DATA_ALIGN = 0;      // 右对齐
    ADC_InitStruct.CSMP = 0;            // 禁用连续采样
    ADC_InitStruct.TCNT = 0;            // 触发一次采样
    ADC_InitStruct.TROVS = 0;           // 禁用过采样
    ADC_InitStruct.OVSR = 0;            // 过采样率
    ADC_InitStruct.TRIG = 0;            // MCPWM0 T0 事件触发 ADC 常规采样
    ADC_InitStruct.S1 = 1;              // 第一段常规采样次数
    ADC_InitStruct.S2 = 0;              // 第二段常规采样次数
    ADC_InitStruct.IS1 = 0;             // 空闲采样次数
    ADC_InitStruct.GAIN = ADC_GAIN_3V6; // 3.6V量程
    ADC_InitStruct.LTH = 0;             // 禁用模拟看门狗
    ADC_InitStruct.HTH = 0xFFFF;        // 禁用模拟看门狗
    ADC_InitStruct.GEN = 0;             // 禁用模拟看门狗
    ADC_InitStruct.IDLE_PRI = 0;

    ADC_Init(ADC1, &ADC_InitStruct);
    ADC_SetChn(ADC1, ADC_DAT_0, ADC1_CHN_TMP);
    TMP_Init();
    while (1)
    {
        ADC_ClearIRQFlag(ADC1, ADC_IF_SF1);
        ADC_SoftTrig(ADC1);

        while (ADC_GetIRQFlag(ADC1, ADC_IF_SF1) == 0)
            ;
        tmp = TMP_GetCurrentTemperature(ADC_GetConversionValue(ADC1, ADC_DAT_0)); // 将ADC采样值转换为温度值并保存到全局变量CurrentTempature中
    }
}
