久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1508|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單一US-015避障模塊,小車避障STM32程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:690596 發(fā)表于 2020-2-6 18:25 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
實(shí)驗(yàn)器材:
        NANO STM32F103開發(fā)板V1版本,US-015避障模塊
        
實(shí)驗(yàn)?zāi)康?
        超聲波避障測(cè)試程序
        
硬件資源:
        1.Trig連接PA8
        2.Echo連接PC8
        
實(shí)驗(yàn)現(xiàn)象:
        本實(shí)驗(yàn)利用PA8產(chǎn)生20us高電平觸發(fā)信號(hào),周期10ms;
              利用TIM3_CH3來做輸入捕獲,我們將捕獲PC8上的高電平脈寬,并將脈寬時(shí)間通過串
              口打印出來,
        
注意事項(xiàng):
        硬件連接在電源關(guān)閉的狀態(tài)下進(jìn)行.  
                **編程時(shí)PC8底層程序要使能其復(fù)用功能。
#include "us015timer.h"
//  PC8---Echo     TIM3 CH3


//TIM3  捕獲初始化
TIM_HandleTypeDef TIM33_Handler;         //定時(shí)器3句柄

//定時(shí)器2通道1輸入捕獲配置
//arr:自動(dòng)重裝值(TIM3是16位的!!)
//psc:時(shí)鐘預(yù)分頻數(shù)
void TIM3_CH3_Cap_Init(u32 arr,u16 psc)
{  
    TIM_IC_InitTypeDef TIM3_CH3Config;  

    TIM33_Handler.Instance=TIM3;                          //通用定時(shí)器3
    TIM33_Handler.Init.Prescaler=psc;                     //分頻系數(shù)
    TIM33_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;    //向上計(jì)數(shù)器
    TIM33_Handler.Init.Period=arr;                        //自動(dòng)裝載值
    TIM33_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;//時(shí)鐘分頻因子
        TIM33_Handler.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;//使能自動(dòng)重載
    HAL_TIM_IC_Init(&TIM33_Handler);                                                //初始化輸入捕獲時(shí)基參數(shù)

    TIM3_CH3Config.ICPolarity=TIM_ICPOLARITY_RISING;    //上升沿捕獲
    TIM3_CH3Config.ICSelection=TIM_ICSELECTION_DIRECTTI;//映射到TI1上
    TIM3_CH3Config.ICPrescaler=TIM_ICPSC_DIV1;          //配置輸入分頻,不分頻
    TIM3_CH3Config.ICFilter=0;                          //配置輸入濾波器,不濾波
    HAL_TIM_IC_ConfigChannel(&TIM33_Handler,&TIM3_CH3Config,TIM_CHANNEL_3);//配置TIM3通道3
        
    HAL_TIM_IC_Start_IT(&TIM33_Handler,TIM_CHANNEL_3);   //開啟TIM3的捕獲通道3,并且開啟捕獲中斷
    __HAL_TIM_ENABLE_IT(&TIM33_Handler,TIM_IT_UPDATE);   //使能更新中斷
        
        HAL_NVIC_SetPriority(TIM3_IRQn,2,0);    //設(shè)置中斷優(yōu)先級(jí),搶占優(yōu)先級(jí)2,子優(yōu)先級(jí)0
    HAL_NVIC_EnableIRQ(TIM3_IRQn);          //開啟ITM3中斷通道  
}

//定時(shí)器2底層驅(qū)動(dòng),時(shí)鐘使能,引腳配置
//此函數(shù)會(huì)被HAL_TIM_IC_Init()調(diào)用
//htim:定時(shí)器2句柄
void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim)
{
    GPIO_InitTypeDef GPIO_Initure;
    __HAL_RCC_TIM3_CLK_ENABLE();            //使能TIM3時(shí)鐘
    __HAL_AFIO_REMAP_TIM3_ENABLE();        
        __HAL_RCC_GPIOC_CLK_ENABLE();                        //開啟GPIOC時(shí)鐘
        
    GPIO_Initure.Pin=GPIO_PIN_8;            //PC8
    GPIO_Initure.Mode=GPIO_MODE_AF_INPUT;         //復(fù)用推挽輸入
    GPIO_Initure.Pull=GPIO_PULLDOWN;        //下拉
    GPIO_Initure.Speed=GPIO_SPEED_HIGH;     //高速
    HAL_GPIO_Init(GPIOC,&GPIO_Initure);

    HAL_NVIC_SetPriority(TIM3_IRQn,2,0);    //設(shè)置中斷優(yōu)先級(jí),搶占優(yōu)先級(jí)2,子優(yōu)先級(jí)0
    HAL_NVIC_EnableIRQ(TIM3_IRQn);          //開啟ITM3中斷通道  
}

//捕獲狀態(tài)
//[7]:0,沒有成功的捕獲;1,成功捕獲到一次.
//[6]:0,還沒捕獲到低電平;1,已經(jīng)捕獲到低電平了.
//[5:0]:捕獲低電平后溢出的次數(shù)
u8  TIM3CH3_CAPTURE_STA=0;                                                        //輸入捕獲狀態(tài)                                                   
u16        TIM3CH3_CAPTURE_VAL;                                                          //輸入捕獲值(TIM3是16位)

//定時(shí)器2中斷服務(wù)函數(shù)
void TIM3_IRQHandler(void)
{
        HAL_TIM_IRQHandler(&TIM33_Handler);                                //定時(shí)器共用處理函數(shù)
}

//定時(shí)器更新中斷(計(jì)數(shù)溢出)中斷處理回調(diào)函數(shù), 該函數(shù)在HAL_TIM_IRQHandler中會(huì)被調(diào)用,實(shí)現(xiàn)多個(gè)計(jì)數(shù)器滿裝載的計(jì)數(shù)
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)//更新中斷(溢出)發(fā)生時(shí)執(zhí)行
{
        if((TIM3CH3_CAPTURE_STA&0X80)==0)                                //還未成功捕獲上升沿
        {
                if(TIM3CH3_CAPTURE_STA&0X40)                                //已經(jīng)捕獲到高電平了
                {
                        if((TIM3CH3_CAPTURE_STA&0X3F)==0X3F)        //高電平太長(zhǎng)了
                        {
                                TIM3CH3_CAPTURE_STA|=0X80;                        //標(biāo)記成功捕獲了一次
                                TIM3CH3_CAPTURE_VAL=0XFFFF;
                        }else TIM3CH3_CAPTURE_STA++;
                }         
        }               
}

//定時(shí)器輸入捕獲中斷處理回調(diào)函數(shù),該函數(shù)在HAL_TIM_IRQHandler中會(huì)被調(diào)用
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)//捕獲中斷發(fā)生時(shí)執(zhí)行
{
        if((TIM3CH3_CAPTURE_STA&0X80)==0)                                //還未成功捕獲
        {
                if(TIM3CH3_CAPTURE_STA&0X40)                                //捕獲到一個(gè)下降沿                 
                {                                 
                        TIM3CH3_CAPTURE_STA|=0X80;                                //標(biāo)記成功捕獲到一次高電平脈寬
            TIM3CH3_CAPTURE_VAL=HAL_TIM_ReadCapturedValue(&TIM33_Handler,TIM_CHANNEL_3);//獲取當(dāng)前的捕獲值.
                        TIM_RESET_CAPTUREPOLARITY(&TIM33_Handler,TIM_CHANNEL_3);   //一定要先清除原來的設(shè)置!!
            TIM_SET_CAPTUREPOLARITY(&TIM33_Handler,TIM_CHANNEL_3,TIM_ICPOLARITY_RISING);//配置TIM3通道3上升沿捕獲
                }else                                                                                  //還未開始,第一次捕獲上升沿
                {
                        TIM3CH3_CAPTURE_STA=0;                                        //清空
                        TIM3CH3_CAPTURE_VAL=0;
                        TIM3CH3_CAPTURE_STA|=0X40;                                //標(biāo)記捕獲到了上升沿
                        __HAL_TIM_DISABLE(&TIM33_Handler);              //關(guān)閉定時(shí)器3
                        __HAL_TIM_SET_COUNTER(&TIM33_Handler,0);
                        TIM_RESET_CAPTUREPOLARITY(&TIM33_Handler,TIM_CHANNEL_3);   //一定要先清除原來的設(shè)置!!
                        TIM_SET_CAPTUREPOLARITY(&TIM33_Handler,TIM_CHANNEL_3,TIM_ICPOLARITY_FALLING);//定時(shí)器3通道3設(shè)置為下降沿捕獲
                        __HAL_TIM_ENABLE(&TIM33_Handler);                //使能定時(shí)器3
                }                    
        }               
}



避障停車.7z

548.44 KB, 下載次數(shù): 22, 下載積分: 黑幣 -5

能正常運(yùn)行

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产乱码久久久久久久 | 欧美一区二区三区电影 | 一区二区影院 | 欧美成人第一页 | 亭亭五月激情 | 日韩福利| 欧美在线一区二区三区 | 99精品视频在线 | 色网站在线免费观看 | 久久久天堂| 黄色免费在线网址 | 欧美专区在线 | 精品啪啪 | 懂色av一区二区三区在线播放 | 中文成人无字幕乱码精品 | 日本免费一区二区三区视频 | 日韩三级免费网站 | 精品久久久精品 | 国产精品成人一区二区 | 亚洲精品福利在线 | 国产乱码精品一区二区三区中文 | 日韩精品一区二区三区在线观看 | 亚洲国产精品一区二区第一页 | 天堂一区在线观看 | 婷婷在线网站 | 521av网站 | 久久综合激情 | 久久99蜜桃综合影院免费观看 | 日韩男人天堂 | 亚洲午夜视频 | 亚洲综合资源 | 午夜男人免费视频 | 在线免费观看黄色 | 欧美三级视频 | 国产91在线观看 | 国产精品成人一区二区三区夜夜夜 | 欧美午夜精品久久久久久浪潮 | 国产视频第一页 | 久久久久国产成人精品亚洲午夜 | 狠狠干天天干 | 日日做夜夜爽毛片麻豆 |