精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32學(xué)習(xí)筆記之電容觸摸2

jf_78858299 ? 來(lái)源:電子技術(shù)園地 ? 作者:滑小稽筆記 ? 2023-05-26 14:41 ? 次閱讀

(4)在led.c文件中添加以下代碼

圖片

(5)在tpad.c文件內(nèi)添加以下代碼

#include "tpad.h"
#include "delay.h"
/***************************************************
Name    :TPAD_Get_Value
Function  :觸摸按鍵值獲取
Paramater  :None
Return    :獲取的充電時(shí)間
***************************************************/
u16 TPAD_Get_Value()
{
  //電容放電
  GPIOA->CRL &= 0xFFFFFF0F ;          //PA1輸入
  GPIOA->CRL |= 0x00000030 ;          //推挽輸出
  GPIOA->ODR &= ~( 1<<1 ) ;          //輸出低電平放電
  delay_ms( 5 ) ;
  TIM5->SR = 0 ;                //清除標(biāo)記
  TIM5->CNT = 0 ;                //歸零
  GPIOA->CRL &= 0xFFFFFF0F ;          //PA1輸入
  GPIOA->CRL |= 0x00000040 ;          //浮空輸入
  //等待捕獲上升沿
  while( ( TIM5->SR&0x04 )==0 )
  {
    if( TIM5->CNT>( 65535-500 ) )
      return TIM5->CNT ;
  }
  return TIM5->CCMR2 ;
}
/***************************************************
Name    :TPAD_Get_MaxVal
Function  :觸摸按鍵最大值獲取
Paramater  :None
Return    :獲取的最大充電時(shí)間
***************************************************/
u16 TPAD_Get_MaxVal( u8 n )
{
  u16 temp=0;
  u16 res=0;
  while( n-- )
  {
    temp = TPAD_Get_Value() ;
    if( temp>res )
      res = temp ;
  }
  return res ;
}
/***************************************************
Name    :TPAD_Init
Function  :觸摸按鍵初始化
Paramater  :None
Return    :None
***************************************************/
TPADData TPAD_Data ;
void TPAD_Init()
{
  u16 buff[ 10 ], temp ;
  u8 i, j ;
  RCC->APB2ENR |= 1<<2 ;
  GPIOA->CRL &= 0xFFFFFF0F ;            //PA1 輸入
  GPIOA->CRL |= 0x00000040 ;            //浮空輸入
  RCC->APB1ENR |= 1<<3 ;              //TIM5時(shí)鐘開(kāi)啟
  TIM5->ARR = 65535 ;
  TIM5->PSC = 5 ;
  TIM5->CCMR1 |= 1<<8 ;              //選擇輸入端IC2映射到TI2上
  TIM5->CCMR1 &= ~( 1<<12 ) ;            //采樣頻率8分頻
  TIM1->CCMR1 &= ~( 1<<10 ) ;            //配置輸入不分頻
  TIM5->CCER &= ~( 1<<5 ) ;            //上升沿捕獲
  TIM5->CCER |= 1<<4 ;                //允許捕獲功能
  TIM5->CR1 |= 1<<0 ;                //開(kāi)啟定時(shí)器5
  //連續(xù)采樣10次
  for( i=0; i<10; i++ )
  {
    buff[ i ] = TPAD_Get_Value() ;
    delay_ms( 10 ) ;
  }
  //排序
  for( i=0; i<9; i++ )
  {
    for( j=i+1; j<10; j++ )
    {
      //升序排列
      if( buff[ i ]>buff[ j ] )
      {
        temp= buff[ i ] ;
        buff[ i ] = buff[ j ] ;
        buff[ j ] = temp ;
      }
    }
  }
  temp = 0 ;
  //獲取中間數(shù)據(jù)的均值
  for( i=2; i<8; i++ )
    temp += buff[ i ] ;
  TPAD_Data.value = temp/6 ;
}
/***************************************************
Name    :TPAD_Scan
Function  :觸摸按鍵掃描
Paramater  :None
Return    :None
***************************************************/
void TPAD_Scan()
{
  u16 rval ;
  rval = TPAD_Get_MaxVal( 3 ) ;
  if( rval>( TPAD_Data.value+100 ) )
    TPAD_Data.State = 1 ;              //手指按下
}

(6)在1.c文件內(nèi)添加主函數(shù)

#include "sys.h"
#include "delay.h"
#include "usart1.h"
#include "led.h"
#include "tpad.h"
int main()
{
  STM32_Clock_Init( 9 ) ;                  //STM32時(shí)鐘初始化
  SysTick_Init( 72 ) ;                    //SysTick初始化
  USART1_Init( 72, 115200 ) ;                //初始化串口1波特率115200
  LED_Init() ;                      //LED初始化
  TPAD_Init() ;                      //觸摸按鍵初始化
  while( 1 )
  {
    TPAD_Scan() ;                    //觸摸按鍵掃描
    if( TPAD_Data.State==1 )
    {
      LED = 0 ;
      TPAD_Data.State = 0 ;
    }
    else
      LED = 1 ;
  }
}

——————————————分割線——————————————

8.4 STM32工程管理

這里的總結(jié)是針對(duì)與之前所學(xué)的所有嵌入式內(nèi)容進(jìn)行總結(jié),隨著后續(xù)代碼越來(lái)越多,對(duì)于工程的管理顯得格外重要,不僅僅是采用本章節(jié)介紹的方法管理工程代碼,對(duì)于后續(xù)的Linux開(kāi)發(fā)和操作系統(tǒng)移植也最好是按照固定的工程格式進(jìn)行管理。

對(duì)于STM32的工程可以劃分為以下幾個(gè)部分:

(1)過(guò)程文件以及最終生成的hex文件:這些文件通通放置在工程1級(jí)目錄下的OBJECT文件中,文件中的內(nèi)容如下圖所示。

圖片

圖中標(biāo)注部分就是最終生成的hex文件,其他的文件均屬于過(guò)程文件,集成開(kāi)發(fā)系統(tǒng)IDE編譯的實(shí)質(zhì)其實(shí)就是采用gcc交叉編譯器將我們編寫的代碼轉(zhuǎn)換成對(duì)應(yīng)的機(jī)器代碼的過(guò)程,具體的步驟會(huì)在Linux系統(tǒng)移植中描述,這里只需要知道利用交叉編譯器進(jìn)行編譯的時(shí)候會(huì)產(chǎn)生大量的鏈接文件和過(guò)程文件,這些文件統(tǒng)統(tǒng)放置在OBJECT目錄下。將工程文件中的過(guò)程文件放置在該目錄下的設(shè)置方式如下圖所示。

圖片

圖片

(2)主函數(shù)文件及主工程文件:在Keil中創(chuàng)建的工程,以及包括main函數(shù)的c文件都位于這個(gè)目錄內(nèi)。

圖片

圖中標(biāo)注的3個(gè)文件都是必不可少的文件,帶有Keil圖標(biāo)的文件就是工程文件,里面包含了整個(gè)工程所需的頭文件,文件路徑以及編譯器位置,文本文件圖標(biāo)的則是c文件,main函數(shù)就放在這個(gè)位置,.s后綴的為匯編啟動(dòng)文件,用于幫助芯片創(chuàng)建C代碼運(yùn)行環(huán)境,初始化堆棧等功能,為了達(dá)到最快效率,所以采用匯編語(yǔ)言來(lái)編寫這個(gè)文件。

(3)自定義系統(tǒng)文件:自定義的系統(tǒng)文件位于SYSTEM目錄中,目錄內(nèi)有3個(gè)子目錄,分別是sys,delay和usart1,如下圖所示。

圖片

delay目錄:是利用SysTick時(shí)鐘來(lái)實(shí)現(xiàn)的延時(shí)功能,主要有毫秒級(jí)延時(shí)和微秒級(jí)延時(shí);

usart1目錄:則是利用串口1來(lái)實(shí)現(xiàn)printf打印輸出的功能,主要用于調(diào)試數(shù)據(jù)的輸出;

sys目錄:是最基礎(chǔ)的工程文件,這個(gè)目錄內(nèi)有1個(gè)c文件和2個(gè)h文件,c文件主要實(shí)現(xiàn)STM32時(shí)鐘樹的配置和中斷系統(tǒng)的設(shè)置功能,是C函數(shù)中最重要的一個(gè)文件,stmxx.h文件則是最底層的寄存器定義文件,里面定義了STM32芯片內(nèi)部所有寄存器的地址和結(jié)構(gòu),通過(guò)C語(yǔ)言來(lái)調(diào)用這里面的寄存器實(shí)現(xiàn)芯片的控制功能。

(4)驅(qū)動(dòng)文件:驅(qū)動(dòng)文件位于HEADERWARE目錄中,用于存放項(xiàng)目所用到的驅(qū)動(dòng),比如之前實(shí)驗(yàn)所用到的LED,KEY,TIM這些外設(shè)都屬于驅(qū)動(dòng)文件內(nèi)容。

至此整個(gè)工程的目錄結(jié)構(gòu)如下圖所示。

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 機(jī)械
    +關(guān)注

    關(guān)注

    8

    文章

    1388

    瀏覽量

    40232
  • 電容按鍵
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    1401
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32學(xué)習(xí)筆記_DAY2_GPIO

    STM32學(xué)習(xí)筆記_DAY2_GPIO,附帶工程文件
    發(fā)表于 08-14 12:44

    詳細(xì)的STM32單片機(jī)學(xué)習(xí)筆記

    STM32單片機(jī)學(xué)習(xí)筆記給大家參考
    發(fā)表于 11-23 17:55 ?1.5w次閱讀

    STM32各模塊學(xué)習(xí)筆記

    STM32個(gè)模塊學(xué)習(xí)筆記 目錄 STM32筆記之一 中斷優(yōu)先級(jí).......................................
    發(fā)表于 11-30 03:32 ?3083次閱讀

    基于STM32觸摸學(xué)習(xí)筆記資料下載

    電子發(fā)燒友網(wǎng)為你提供基于STM32觸摸學(xué)習(xí)筆記資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計(jì)、用戶指南、解決方案等資料,希望可以幫助到
    發(fā)表于 04-24 08:48 ?37次下載
    基于<b class='flag-5'>STM32</b>的<b class='flag-5'>觸摸</b>屏<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>資料下載

    OpenStackCinder學(xué)習(xí)筆記

    OpenStackCinder學(xué)習(xí)筆記(開(kāi)關(guān)電源技術(shù)教程ppt)-該文檔為OpenStackCinder學(xué)習(xí)
    發(fā)表于 09-23 12:40 ?5次下載
    OpenStack<b class='flag-5'>之</b>Cinder<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>

    STM32學(xué)習(xí)筆記SysTick

    Systick大有不同,于是作此學(xué)習(xí)筆記。Systick的兩大作用:1、可以產(chǎn)生精確的延時(shí)2、可以提供給操作系統(tǒng)一個(gè)單獨(dú)的心跳(時(shí)鐘)節(jié)拍通常實(shí)現(xiàn)Delay(N)函數(shù)的方法為:    &n
    發(fā)表于 11-25 10:36 ?1次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b><b class='flag-5'>之</b>SysTick

    STM32學(xué)習(xí)筆記1——軟硬件基礎(chǔ)keil5編程與GPIO開(kāi)發(fā)

    STM32學(xué)習(xí)筆記1——軟硬件基礎(chǔ)keil5編程與GPIO開(kāi)發(fā)
    發(fā)表于 11-30 12:36 ?4次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>1——軟硬件基礎(chǔ)<b class='flag-5'>之</b>keil5編程與GPIO開(kāi)發(fā)

    STM32學(xué)習(xí)筆記--------day1

    STM32學(xué)習(xí)筆記--------day1
    發(fā)表于 12-05 20:36 ?8次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>--------day1

    STM32電容觸摸按鍵

    00. 目錄文章目錄00. 目錄01. 電容觸摸按鍵簡(jiǎn)介02. 硬件設(shè)計(jì)03. 功能描述04. 程序示例05. 結(jié)果驗(yàn)證06. 附錄07. 聲明01. 電容觸摸按鍵簡(jiǎn)介
    發(fā)表于 12-14 18:49 ?39次下載
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>電容</b><b class='flag-5'>觸摸</b>按鍵

    STM32學(xué)習(xí)筆記(11)電容觸摸按鍵

    所需時(shí)間T1,當(dāng)觸摸時(shí),觸摸系統(tǒng)相當(dāng)于并聯(lián)多一個(gè)電容,總電容增大,充電時(shí)間延長(zhǎng),通過(guò)測(cè)量此時(shí)充電所需時(shí)間T2,如果T
    發(fā)表于 12-28 19:17 ?5次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>(11)<b class='flag-5'>電容</b><b class='flag-5'>觸摸</b>按鍵

    (一)STM32開(kāi)發(fā)工程模板的創(chuàng)建學(xué)習(xí)筆記

    本來(lái)這個(gè)實(shí)習(xí)內(nèi)容是去年做的,基于STM32f103芯片的智能小車項(xiàng)目培訓(xùn),做完之后我就把學(xué)習(xí)資料打包放在百度云盤里了。因?yàn)樽罱诟鴮?dǎo)師做一個(gè)項(xiàng)目,需要用到STM32單片機(jī),于是重新將塵封多許的
    發(fā)表于 12-29 19:45 ?1次下載
    (一)<b class='flag-5'>STM32</b>開(kāi)發(fā)<b class='flag-5'>之</b>工程模板的創(chuàng)建<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>

    stm32學(xué)習(xí)筆記1

    此博客僅個(gè)人學(xué)習(xí)筆記,用以本人學(xué)習(xí)stm32的記錄、分析、總結(jié)。有所錯(cuò)漏再所難免,有則改之無(wú)則加勉。這里就直接以通俗的語(yǔ)言來(lái)記錄了,大家見(jiàn)諒。學(xué)習(xí)
    發(fā)表于 01-18 08:37 ?59次下載
    <b class='flag-5'>stm32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>1

    STM32入門學(xué)習(xí)筆記電容觸摸實(shí)驗(yàn)(上)

    隨著科技的發(fā)展,傳統(tǒng)的機(jī)械按鍵正在逐步從設(shè)備上面消失,這個(gè)原因主要有機(jī)械按鍵由于是采用機(jī)械接觸的方式,壽命比較短,從用戶體驗(yàn)上看,機(jī)械按鍵也顯得操作復(fù)雜,對(duì)比現(xiàn)在的電容按鍵,電容按鍵具有壽命長(zhǎng),因?yàn)?/div>
    的頭像 發(fā)表于 02-16 10:22 ?1206次閱讀
    <b class='flag-5'>STM32</b>入門<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b><b class='flag-5'>之</b><b class='flag-5'>電容</b><b class='flag-5'>觸摸</b>實(shí)驗(yàn)(上)

    STM32入門學(xué)習(xí)筆記電容觸摸實(shí)驗(yàn)(下)

    隨著科技的發(fā)展,傳統(tǒng)的機(jī)械按鍵正在逐步從設(shè)備上面消失,這個(gè)原因主要有機(jī)械按鍵由于是采用機(jī)械接觸的方式,壽命比較短,從用戶體驗(yàn)上看,機(jī)械按鍵也顯得操作復(fù)雜,對(duì)比現(xiàn)在的電容按鍵,電容按鍵具有壽命長(zhǎng),因?yàn)?/div>
    的頭像 發(fā)表于 02-16 10:22 ?627次閱讀
    <b class='flag-5'>STM32</b>入門<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b><b class='flag-5'>之</b><b class='flag-5'>電容</b><b class='flag-5'>觸摸</b>實(shí)驗(yàn)(下)

    STM32學(xué)習(xí)筆記電容觸摸1

    隨著科技的發(fā)展,傳統(tǒng)的機(jī)械按鍵正在逐步從設(shè)備上面消失,這個(gè)原因主要有機(jī)械按鍵由于是采用機(jī)械接觸的方式,壽命比較短,從用戶體驗(yàn)上看,機(jī)械按鍵也顯得操作復(fù)雜,對(duì)比現(xiàn)在的電容按鍵,電容按鍵具有壽命長(zhǎng),因?yàn)?/div>
    的頭像 發(fā)表于 05-26 14:37 ?801次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b><b class='flag-5'>之</b><b class='flag-5'>電容</b><b class='flag-5'>觸摸</b>1