|
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "timer.h"
- #include "lcd.h"
- extern u8 TIM5CH1_CAPTURE_STA; //輸入捕獲狀態
- extern u32 TIM5CH1_CAPTURE_VAL; //輸入捕獲值
-
-
- //超聲波函數引腳初始化
-
- void ChaoShengBo_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF時鐘
- //GPIOF9,F10初始化設置
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通輸出模式
- GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽輸出
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
- GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化
-
- GPIO_ResetBits(GPIOF,GPIO_Pin_10);//GPIOF9,F10設置高,燈滅
- }
-
-
-
-
-
-
- int main(void)
- {
- u8 key; //保存鍵值
- long long High_TIME=0,distance=0;
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統中斷優先級分組2
- delay_init(168); //初始化延時函數
- uart_init(115200);//初始化串口波特率為115200
- ChaoShengBo_Init();
- LCD_Init(); //初始化LCD FSMC接口
- TIM5_CH1_Cap_Init(0XFFFFFFFF,84-1); //以1Mhz的頻率計數
- while(1)
- {
- delay_ms(100);
- GPIO_SetBits(GPIOF,GPIO_Pin_10);
- delay_ms(1);
- GPIO_ResetBits(GPIOF,GPIO_Pin_10); // 給超聲波一個高電平
- if(TIM5CH1_CAPTURE_STA&0X80) //成功捕獲到了一次高電平
- {
- High_TIME=TIM5CH1_CAPTURE_STA&0X3F;
- High_TIME*=0XFFFFFFFF; //溢出時間總和
- High_TIME+=TIM5CH1_CAPTURE_VAL; //得到總的高電平時間 單位us
- distance=High_TIME*340/2/10000; //單位cm
- LCD_ShowString(30,40,210,24,24,"High_TIME:");
- LCD_ShowString(30,70,210,24,24,"distance:");
- LCD_ShowxNum(90,40,High_TIME,15,24,0);
- LCD_ShowxNum(150,70,distance,20,24,0);
- TIM5CH1_CAPTURE_STA=0; //開啟下一次捕獲
- }
- }
- }
復制代碼
全部資料51hei下載地址:
點陣.7z
(1.52 MB, 下載次數: 39)
2019-11-19 17:59 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|