

下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、嵌式單機(jī)基礎(chǔ)篇()之電容觸摸按鍵stm32F1 電容觸摸按鍵詳解1、RC充放電電路原理:(1)如上圖所,當(dāng)開(kāi)關(guān)關(guān)閉時(shí),電容經(jīng)過(guò)電阻R充電,最開(kāi)始的瞬間電流為最值V1/R,隨后隨著Vt越來(lái)越,電流變,電容充電速度變慢,當(dāng)V1=Vt時(shí),電流為0(2)RC電路充放電公式:Vt= V0+(V1-V0)* 1-exp(-t/RC)V0 為電容上的初始電壓值;V1 為電容最終可充到或放到的電壓值;Vt 為t時(shí)刻電容上的電壓值。R 為充電電阻C 為電容容值e 為然底數(shù)t 為充電時(shí)間如果V0為0,也就是從0V開(kāi)始充電。那么公式簡(jiǎn)化為:Vt= V1* 1-exp(-t/RC)結(jié)論:同樣的條件下,電容值C跟時(shí)間值
2、t成正關(guān)系,電容越,充電到達(dá)某個(gè)臨界值的時(shí)間越長(zhǎng)。2、電容觸摸按鍵原理:R:外接電容充放電電阻。Cs:TPAD和PCB間的雜散電容。Cx:指按下時(shí),指和TPAD之間的電容。開(kāi)關(guān):電容放電開(kāi)關(guān),由STM32 IO代替。電容觸摸按鍵原理簡(jiǎn)之就是,當(dāng)指按下觸摸按鍵的時(shí)候,相當(dāng)于充電電容增,那么所需的充電時(shí)間就變長(zhǎng),根據(jù)電容充電時(shí)間的差異來(lái)判斷是否按下了觸摸按鍵上圖的開(kāi)關(guān)作是,當(dāng)開(kāi)關(guān)閉合時(shí),電容放電,當(dāng)開(kāi)關(guān)斷開(kāi)時(shí),電容充電。IO代替的話是需要先將IO配置成推挽輸出,再將IO置低電平0,來(lái)實(shí)現(xiàn)電容放電,再將IO配置成浮空輸,相當(dāng)于斷開(kāi)開(kāi)關(guān),此時(shí)電容開(kāi)始充電3、程序?qū)崿F(xiàn):觸摸按鍵程序與原理#define
3、TPAD_ARR_MAX_VAL 0XFFFF /最的值vu16 tpad_default_val0;/空載的時(shí)候(沒(méi)有按下),計(jì)數(shù)器需要的時(shí)間第步:初始化,也就是先放電后充電RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ); /使能端時(shí)鐘GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1; /PA1 端配置GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP; /推挽輸出GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;GPIO_Res
4、etBits(,GPIO_Pin_1);/PA.1輸出0,放電delay_ms(5);TIM_SetCounter(TIM5,0); /0TIM_ClearITPendingBit(TIM5, TIM_IT_CC2|TIM_IT_Update); /清除中斷標(biāo)志/設(shè)置GPIOA.1為浮空輸GPIO_InitStructure.GPIO_ModeGPIO_Mode_IN_FLOATING; /浮空輸GPIO_Init(, GPIO_InitStructure);第步:輸捕獲,上升沿捕獲/定時(shí)器2通道2輸捕獲配置void TIM5_CH2_Cap_Init(u16 arr,u16 psc)GPIO
5、_InitStructure.GPIO_Pin =GPIO_Pin_1; /PA1端配置GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz; /速度50MHzGPIO_InitStructure.GPIO_ModeGPIO_Mode_IN_FLOATING; /浮空輸GPIO_Init(, GPIO_InitStructure); /設(shè)置為浮空輸TIM_TimeBaseStructure.TIM_Period =arr; /設(shè)定計(jì)數(shù)器動(dòng)重裝值TIM_TimeBaseStructure.TIM_Prescaler psc; /預(yù)分頻器TIM_TimeB
6、aseStructure.TIM_ClockDivision =TIM_CKD_DIV1; /設(shè)置時(shí)鐘分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode =TIM_CounterMode_Up; /TIM向上計(jì)數(shù)模式TIM_TimeBaseInit(TIM5, TIM_TimeBaseStructure); /根據(jù)TIM_TimeBaseInitStruct中指定的參數(shù)初始化TIMx的時(shí)間基數(shù)單位/初始化通道2TIM5_ICInitStructure.TIM_Channel =TIM_Channel_2; /CC1S=01 選擇輸端IC
7、2映射到TI5上TIM5_ICInitStructure.TIM_ICPolarity =TIM_ICPolarity_Rising; /上升沿捕獲TIM5_ICInitStructure.TIM_ICSelection =TIM_ICSelection_DirectTI;TIM5_ICInitStructure.TIM_ICPrescaler =TIM_ICPSC_DIV1; /配置輸分頻,不分頻TIM5_ICInitStructure.TIM_ICFilter =0 x03;/IC2F=0011 8個(gè)定時(shí)器時(shí)鐘周期濾波TIM_ICInit(TIM5, TIM5_ICInitStructur
8、e);/初始化I5 IC2TIM_Cmd(TIM5,ENABLE); /使能定時(shí)器50開(kāi)始到達(dá)上升沿的時(shí)間u16 TPAD_Get_Val(void)TPAD_Reset();while(TIM_GetFlagStatus(TIM5, TIM_IT_CC2) =)/等待捕獲上升沿if(TIM_GetCounter(TIM5)-500)return TIM_GetCounter(TIM5);/超時(shí)了,直接返回CNT的值;return TIM_GetCapture2(TIM5);第四步,獲取時(shí)間最值u16 TPAD_Get_MaxVal(u8 n)u16 temp0;tempTPAD_Get_Va
9、l();/得到次值TIM5_CH2_Cap_Init(,psc-1);/1Mhz的頻率計(jì)數(shù)for(0;10;)/連續(xù)讀取10次delay_ms(10);for(0;9;)/排序if(bufbuf)/升序排列tempbuf;bufbuf;for(2;8;)tempbuf;/取中間的6個(gè)數(shù)據(jù)進(jìn)平均tpad_default_valtemp/6;if(tpad_default_val/2)return 1;/初始化遇到超過(guò)TPAD_ARR_MAX_VAL/2的數(shù)值,不正常!第六步,掃描并判斷是否觸摸按鍵/mode:0,不持連續(xù)觸發(fā)(按下次必須松開(kāi)才能按下次);1,持連續(xù)觸發(fā)(可以直按下)/返回值:0,
10、沒(méi)有按下;1,有按下;#define TPAD_GATE_VAL 100 /觸摸的門(mén)限值,也就是必須于tpad_default_val+TPAD_GATE_VAL,才認(rèn)為是有效觸摸.u8 TPAD_Scan(u8 mode)static u8 keyen0; /0,可以開(kāi)始檢測(cè);0,還不能開(kāi)始檢測(cè)u8 res0;u8 sample3; /默認(rèn)采樣次數(shù)為3次u16 rval;if(mode)sample6; /持連按的時(shí)候,設(shè)置采樣次數(shù)為6次keyen0; /持連按rvalTPAD_Get_MaxVal(sample);if(rval(tpad_default_valTPAD_GATE_VAL)/于tpad_default_val+TPAD_GATE_VAL,有效if(keyen0)res1; /keyen=0,有效/printf(r:%drn,rval);keyen3; /少要再過(guò)3次之后才能按鍵有效if(keyen)keyen-;第七步,主函數(shù)u8 t0; delay_init();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);/設(shè)置中
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司房租收取管理辦法
- 供水企業(yè)薪酬管理辦法
- 華僑職稱(chēng)管理暫行辦法
- 公益宣傳印章管理辦法
- 保健原料采購(gòu)管理辦法
- 辦公用房管理制度優(yōu)化與實(shí)施
- 新學(xué)制背景下哲學(xué)話語(yǔ)與教育權(quán)力的博弈
- 景區(qū)建筑維修管理辦法
- 租賃業(yè)務(wù)風(fēng)險(xiǎn)管理與防控策略探討
- 云計(jì)算管理平臺(tái)系統(tǒng)建設(shè)的策略與實(shí)踐
- 經(jīng)濟(jì)糾紛和解協(xié)議書(shū)
- 2023年蕪湖市灣沚區(qū)國(guó)有資本建設(shè)投資有限公司招聘考試真題
- 棋牌室四人合作協(xié)議書(shū)范文
- 中國(guó)醫(yī)院質(zhì)量安全管理第2-13部分:患者服務(wù)臨床用血
- 《籃球原地運(yùn)球》教案 (共三篇)
- 思維模型之六頂思考帽
- 2025年高考化學(xué)復(fù)習(xí)備考策略講座
- 《網(wǎng)絡(luò)系統(tǒng)建設(shè)與運(yùn)維》課件-第3章 路由技術(shù)
- 常用建筑類(lèi)型疏散寬度計(jì)算表格
- QB/T 2660-2024 化妝水(正式版)
- GB/T 4074.1-2024繞組線試驗(yàn)方法第1部分:一般規(guī)定
評(píng)論
0/150
提交評(píng)論