国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【單片機】STM32單片機頻率計程序,外部脈沖計數(shù)程序,基于脈沖計數(shù)的頻率計程序,STM32F103

這篇具有很好參考價值的文章主要介紹了【單片機】STM32單片機頻率計程序,外部脈沖計數(shù)程序,基于脈沖計數(shù)的頻率計程序,STM32F103。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

定時器外部脈沖計數(shù)功能

兩種方法用于在單片機中實現(xiàn)頻率計的功能。

第一種方法是通過定時器來衡量信號的周期,然后將周期轉(zhuǎn)換為頻率。在這種方法中,你可以使用單片機的定時器模塊來測量輸入信號的周期,定時器會產(chǎn)生一個計數(shù)值,你可以根據(jù)這個計數(shù)值來推算出輸入信號的周期,并通過簡單的數(shù)學(xué)運算將周期轉(zhuǎn)換為頻率?!径〞r器捕獲功能】

第二種方法是統(tǒng)計一定時間內(nèi)脈沖的個數(shù)。在這種方法中,你可以使用單片機的輸入捕獲功能來記錄輸入脈沖的次數(shù)。通過在一段固定的時間內(nèi)記錄脈沖的個數(shù),然后將脈沖個數(shù)除以時間,就可以得到頻率值?!径〞r器外部脈沖計數(shù)功能】

本文使用第二種,【定時器外部脈沖計數(shù)功能】。

程序?qū)崿F(xiàn)

TIM1 定時一秒鐘中斷

這里有篇博客介紹:
https://qq742971636.blog.csdn.net/article/details/131387700

TIM2 外部脈沖計數(shù)配置

首先,通過RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE)和RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE)使能了TIM2和GPIOA的時鐘。

然后,使用GPIO_InitStructure結(jié)構(gòu)體對GPIOA的Pin 0進行配置,設(shè)置為輸入模式(GPIO_Mode_IPD)并設(shè)置為下拉模式。這樣可以確保輸入信號的穩(wěn)定性。

接著,初始化定時器TIM2。設(shè)置計數(shù)器自動重裝值為0xFFFF,表示計數(shù)器將在達到該值后重新裝載。預(yù)分頻器被設(shè)為0,時鐘分割被設(shè)置為TIM_CKD_DIV1,即不分割時鐘。計數(shù)模式被設(shè)置為向上計數(shù)模式(TIM_CounterMode_Up)。最后通過TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure)函數(shù)進行初始化。

使用TIM_ITRxExternalClockConfig(TIM2,TIM_TS_ETRF)配置外部觸發(fā)模式,這樣定時器才能根據(jù)外部脈沖信號進行計數(shù)。

使用TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0)配置外部觸發(fā)源的細(xì)節(jié),包括設(shè)置分頻系數(shù)、極性等。這里的參數(shù)都是一些默認(rèn)值。

通過TIM_SetCounter(TIM2, 0)將計數(shù)器的初始值設(shè)置為0。

最后,使用TIM_Cmd(TIM2, ENABLE)使能定時器。

TIM3 PWM產(chǎn)生

這里有篇博客介紹:
https://qq742971636.blog.csdn.net/article/details/131445707

【單片機】STM32單片機頻率計程序,外部脈沖計數(shù)程序,基于脈沖計數(shù)的頻率計程序,STM32F103

總程序

將TIM3_CH1 PWM引腳PA6接上外部脈沖計數(shù)引腳TIM2_CH1 PA0,電腦接收串口0的輸出,即可看到打印出的頻率數(shù)值。

#include "sys.h"
#include "usart.h"

long freq = 0;//頻率
long freq_cnt = 0;

void TIM2_Cap_Init(u16 arr, u16 psc)      //配置 TIM2_CH1_ETR 為外部脈沖計數(shù)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    NVIC_InitTypeDef NVIC_InitStructure;

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);    //使能TIM2時鐘
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);   //使能GPIOA時鐘

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;              //PA0 清除之前設(shè)置
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;           //PA0 輸入
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    GPIO_ResetBits(GPIOA, GPIO_Pin_0);                       //PA0 下拉

    //初始化定時器2 TIM2
    TIM_TimeBaseStructure.TIM_Period = arr;              //設(shè)定計數(shù)器自動重裝值
    TIM_TimeBaseStructure.TIM_Prescaler = psc;             //預(yù)分頻器
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //設(shè)置時鐘分割:TDTS = Tck_tim
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上計數(shù)模式
    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);         //根據(jù)TIM_TimeBaseInitStruct中指定的參數(shù)初始化TIMx的時間基數(shù)單位
    TIM_ITRxExternalClockConfig(TIM2, TIM_TS_ETRF);          //配置外部觸發(fā),否則不會計數(shù)
    TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);
    TIM_SetCounter(TIM2, 0);

    //中斷優(yōu)先級NVIC設(shè)置
    NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;  //TIM2中斷
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //先占優(yōu)先級0級
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //從優(yōu)先級3級
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
    NVIC_Init(&NVIC_InitStructure);  //初始化NVIC寄存器

    TIM_Cmd(TIM2, ENABLE);                                  //使能定時器
}

void TIM2_UP_IRQHandler(void)   //TIM2中斷
{
    if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)           //溢出中斷
    {
        TIM_ClearITPendingBit(TIM2, TIM_IT_Update);          //清除中斷標(biāo)志
        freq_cnt++;             //freq_cnt加1
    }
}


//初始化定時器為中斷觸發(fā)
void TIM1_Init(u16 arr, u16 psc) {
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    NVIC_InitTypeDef NVIC_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //時鐘使能

    //定時器TIM1初始化
    TIM_TimeBaseStructure.TIM_Period = arr; //設(shè)置在下一個更新事件裝入活動的自動重裝載寄存器周期的值
    TIM_TimeBaseStructure.TIM_Prescaler = psc; //設(shè)置用來作為TIMx時鐘頻率除數(shù)的預(yù)分頻值
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //設(shè)置時鐘分割:TDTS = Tck_tim
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上計數(shù)模式
    TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //根據(jù)指定的參數(shù)初始化TIMx的時間基數(shù)單位

    TIM_ITConfig(TIM1, TIM_IT_Update, ENABLE); //使能指定的TIM3中斷,允許更新中斷

    //中斷優(yōu)先級NVIC設(shè)置
    NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn;  //TIM1中斷
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //先占優(yōu)先級0級
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //從優(yōu)先級3級
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
    NVIC_Init(&NVIC_InitStructure);  //初始化NVIC寄存器

    TIM_Cmd(TIM1, ENABLE);  //使能TIM1

}


/* 定時器1中斷服務(wù)程序 */
void TIM1_UP_IRQHandler(void)                                    /* TIM1中斷 */
{
    if (TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET)  /* 檢查TIM1更新中斷發(fā)生與否 */
    {
        TIM_ClearITPendingBit(TIM1, TIM_IT_Update);   /* 清除TIM1更新中斷標(biāo)志 */
        freq = freq_cnt * 0XFFFF + TIM_GetCounter(TIM2);                   //讀取單位時間內(nèi)計數(shù)器計的CNT值
        printf("%ld Hz \r\n", freq);//打印頻率
        freq = 0;
			  freq_cnt = 0;
			  TIM_SetCounter(TIM2, 0);
    }
}


//TIM3 PWM部分初始化
//PWM輸出初始化
//arr:自動重裝值
//psc:時鐘預(yù)分頻數(shù)
void TIM3_PWM_Init(u16 arr, u16 psc) {
    GPIO_InitTypeDef GPIO_InitStructure;
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    TIM_OCInitTypeDef TIM_OCInitStructure;


    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);    //使能定時器3時鐘
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);  //使能GPIO外設(shè)和AFIO復(fù)用功能模塊時鐘
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);  //使能GPIO外設(shè)和AFIO復(fù)用功能模塊時鐘


    //設(shè)置該引腳為復(fù)用輸出功能
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; //TIM3_CH1 TIM3_CH2
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //復(fù)用推挽輸出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; //TIM3_CH3 TIM3_CH4
    GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO

    //初始化TIM3
    TIM_TimeBaseStructure.TIM_Period = arr; //設(shè)置在下一個更新事件裝入活動的自動重裝載寄存器周期的值
    TIM_TimeBaseStructure.TIM_Prescaler = psc; //設(shè)置用來作為TIMx時鐘頻率除數(shù)的預(yù)分頻值
    TIM_TimeBaseStructure.TIM_ClockDivision = 0; //設(shè)置時鐘分割:TDTS = Tck_tim
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上計數(shù)模式
    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根據(jù)TIM_TimeBaseInitStruct中指定的參數(shù)初始化TIMx的時間基數(shù)單位

    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //選擇定時器模式:TIM脈沖寬度調(diào)制模式1
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //輸出極性:TIM輸出比較極性高
    TIM_OC1Init(TIM3, &TIM_OCInitStructure);  //根據(jù)T指定的參數(shù)初始化外設(shè)TIM3 OC1

    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //選擇定時器模式:TIM脈沖寬度調(diào)制模式2
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //輸出極性:TIM輸出比較極性高
    TIM_OC2Init(TIM3, &TIM_OCInitStructure);  //根據(jù)T指定的參數(shù)初始化外設(shè)TIM3 OC2

    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //選擇定時器模式:TIM脈沖寬度調(diào)制模式3
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //輸出極性:TIM輸出比較極性高
    TIM_OC3Init(TIM3, &TIM_OCInitStructure);  //根據(jù)T指定的參數(shù)初始化外設(shè)TIM3 OC3

    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //選擇定時器模式:TIM脈沖寬度調(diào)制模式4
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //輸出極性:TIM輸出比較極性高
    TIM_OC4Init(TIM3, &TIM_OCInitStructure);  //根據(jù)T指定的參數(shù)初始化外設(shè)TIM3 OC4

    TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);  //使能TIM3在CCR1上的預(yù)裝載寄存器
    TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);  //使能TIM3在CCR2上的預(yù)裝載寄存器
    TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);  //使能TIM3在CCR3上的預(yù)裝載寄存器
    TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);  //使能TIM3在CCR4上的預(yù)裝載寄存器

    TIM_Cmd(TIM3, ENABLE);  //使能TIM3
}


int main(void) {
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);               /* 設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級 */
    delay_init();                                                   /* 延時函數(shù)初始化 */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);      /* 關(guān)閉jtag,使能SWD,可以用SWD模式調(diào)試 */
    delay_ms(500);                                                /* 等待穩(wěn)定 */
    uart_init(115200);

    TIM1_Init(10000 - 1, 7200 - 1);//1s一次中斷

    TIM2_Cap_Init(0XFFFF, 0); //定時器2初始化

    TIM3_PWM_Init(7200, 0);    /* 10KHz PWM PA6 */
    TIM_SetCompare1(TIM3, 3600);
    TIM_SetCompare2(TIM3, 3600);
    TIM_SetCompare3(TIM3, 3600);
    TIM_SetCompare4(TIM3, 3600);


    while (1) {

    }
}



10KHz PWM PA6 接到TIM2 PA0。
【單片機】STM32單片機頻率計程序,外部脈沖計數(shù)程序,基于脈沖計數(shù)的頻率計程序,STM32F103文章來源地址http://www.zghlxwxcb.cn/news/detail-514791.html

到了這里,關(guān)于【單片機】STM32單片機頻率計程序,外部脈沖計數(shù)程序,基于脈沖計數(shù)的頻率計程序,STM32F103的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 36、基于51單片機頻率計 LCD 1602顯示系統(tǒng)設(shè)計

    36、基于51單片機頻率計 LCD 1602顯示系統(tǒng)設(shè)計

    數(shù)字頻率計是一種基本的測量儀器。它被廣泛應(yīng)用于航天、電子、測控等領(lǐng)域,還被應(yīng)用在計算機及各種數(shù)學(xué)儀表中。一般采用的是十進制數(shù)字,顯示被測信號頻率?;竟δ苁菧y量正弦信號,方波信號以及其他各種單位時間內(nèi)變壞的物理量。由于其使用十進制數(shù)顯示,測量

    2024年02月03日
    瀏覽(25)
  • 基于STM32的簡易數(shù)字頻率計仿真設(shè)計(仿真+程序+設(shè)計報告+講解)

    基于STM32的簡易數(shù)字頻率計仿真設(shè)計(仿真+程序+設(shè)計報告+講解)

    基于STM32的簡易數(shù)字頻率計仿真設(shè)計(仿真+程序+設(shè)計報告+講解) 仿真圖proteus 8.9 程序編譯器:keil 5 編程語言:C語言 設(shè)計編號:C0079 基于STM32的簡易數(shù)字頻率計仿真設(shè)計(仿真+程序+設(shè)計報告+講解) 結(jié)合實際情況,基于STM32F103單片機設(shè)計一個數(shù)字頻率計仿真設(shè)計。該設(shè)計應(yīng)滿

    2024年02月09日
    瀏覽(18)
  • 基于stm32f103c8t6的fft頻率計

    之前項目中需要用到正弦信號的頻率測量,也參考了幾個大佬的博客(鏈接如下),但可能是由于stm32的型號不匹配,雖然也在網(wǎng)上查了一些需要修改的地方,但結(jié)果一直不太對,后來經(jīng)過自己摸索結(jié)果終于對了,在這里給大家分享下,具體原理不在贅述。 參考的部分大佬博

    2024年02月14日
    瀏覽(49)
  • STM32單片機(六)TIM定時器 -> 第六節(jié):TIM輸入捕獲練習(xí)(輸入捕獲模式測頻率和PWMI模式測頻率占空比)

    STM32單片機(六)TIM定時器 -> 第六節(jié):TIM輸入捕獲練習(xí)(輸入捕獲模式測頻率和PWMI模式測頻率占空比)

    ?? 專欄簡介:本專欄記錄了從零學(xué)習(xí)單片機的過程,其中包括51單片機和STM32單片機兩部分;建議先學(xué)習(xí)51單片機,其是STM32等高級單片機的基礎(chǔ);這樣再學(xué)習(xí)STM32時才能融會貫通。 ?? 專欄適用人群 :適用于想要從零基礎(chǔ)開始學(xué)習(xí)入門單片機,且有一定C語言基礎(chǔ)的的童鞋

    2024年02月09日
    瀏覽(27)
  • 數(shù)字頻率計

    ? 電子技術(shù)應(yīng)用實習(xí) 目錄 1 ?實習(xí)目的、內(nèi)容和要求 1 1.1 實習(xí)目的 1 1.2 實習(xí)內(nèi)容 1 1.3 實習(xí)要求 1 ????????1.3.1設(shè)計要求..................................................................................................................1 1.3.2實習(xí)任務(wù)要求 2 2 ?設(shè)計原理及軟件簡介 3 2.1設(shè)計原理 3 2.2M

    2023年04月18日
    瀏覽(20)
  • 基于FPGA的頻率計

    基于FPGA的頻率計

    好久沒更了,百忙之中寫一篇so easy的代碼——基于FPGA的頻率計設(shè)計。 廢話不多說,下面是百度搜索關(guān)于頻率計的簡潔概念。 數(shù)字頻率計是一種基本的測量儀器,被廣泛應(yīng)用于航天、電子、測控等領(lǐng)域?;趥鹘y(tǒng)測頻原理的頻率計的測量精度將隨被測信號頻率的下降而降低,

    2024年02月12日
    瀏覽(23)
  • FPGA—簡易頻率計(附代碼)

    FPGA—簡易頻率計(附代碼)

    目錄 1. 內(nèi)容概要 2. 理論學(xué)習(xí) 3. 實操 3.1 整體設(shè)計 3.2?頻率計算模塊 3.2.1 模塊框圖 3.2.2? 波形圖繪制 3.2.3? RTL代碼 3.3?頂層模塊 3.4 仿真驗證 3.5 上板驗證 4. 總結(jié) ? ? ? ?頻率測量在電子設(shè)計領(lǐng)域和測量領(lǐng)域經(jīng)常被使用,本文講解 等精度測量法 的原理和實現(xiàn)方法,使用FPGA 設(shè)

    2024年02月09日
    瀏覽(17)
  • 【FPGA & Modsim】數(shù)字頻率計

    【FPGA & Modsim】數(shù)字頻率計

    module flag(clk,rst_n,cnt); input clk; input rst_n; output [2:0]cnt ; reg[31:0]count ; reg [2:0]cnt; always@(posedge clk or negedge rst_n) begin if(~rst_n)begin count=0 ; cnt=3\\\'d0 ;end else if (count= 32\\\'d24 999) begin cnt=cnt+1\\\'b1 ;count=32\\\'d0 ; end else if (cnt=3\\\'d6) begin cnt=0;end else count=count+1\\\'b1 ; end endmodule \\\'timescale 1 ns/ 1ps / module seg (

    2024年01月16日
    瀏覽(19)
  • (僅對于(舊板)12分頻的51單片機而言)機器周期,時鐘周期,晶振振蕩頻率(fosc)的關(guān)系; (51、stm32通用)分頻的原理和作用

    1,晶振振蕩頻率(fosc) fosc即板子所使用的晶振頻率,如常用的11.0592Mhz。 2,時鐘周期 時鐘周期 = 1 / fosc ,單位為us。 3,機器周期 機器周期 = 12 / fosc ,單位為us。 為啥是12? 因為絕大多數(shù)51單片機默認(rèn)12分頻,分頻原理直接看第四點。 12分頻的原因:老版51單片機使用復(fù)雜

    2024年02月13日
    瀏覽(22)
  • VHDL實現(xiàn)數(shù)字頻率計的設(shè)計

    VHDL實現(xiàn)數(shù)字頻率計的設(shè)計

    當(dāng)設(shè)計文件加載到目標(biāo)器件后,撥動開關(guān)的K1,使其置為高電平,從輸入輸出觀測模塊的輸入端輸入一個頻率大于1Hz的時鐘信號,這時在數(shù)碼管上顯示這個時鐘信號的頻率值。如果使撥動開關(guān)置為低電平,數(shù)碼管上顯示的值為系統(tǒng)上的數(shù)字信號源的時鐘頻率。改變數(shù)字信號源

    2024年02月02日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包