|
STM32F4系列的超超聲波測(cè)距,型號(hào)HC-SR04,通過超聲波模塊可正常獲取距離,再進(jìn)行二次開發(fā)
0.jpg (19.13 KB, 下載次數(shù): 39)
下載附件
2018-4-13 15:38 上傳
單片機(jī)源程序如下:
- #include "stm32f4xx.h"
- #include "string.h"
- #include "stdio.h"
- #include "stdlib.h"
- #include "delay.h"
- #include "sys.h"
- #include "beep.h"
- #include "key.h"
- #include "led.h"
- #include "hc_sr04.h"
- #include "init_usart.h"
- #include "bsp_ili9341_lcd.h"
- //#include "w25qxx.h"
- //#include "sdio_sdcard.h"
- //#include "lcd.h"
- //#include "malloc.h"
- //#include "spi.h"
- char buf[400] = {0};//WiFi設(shè)置接收字符串
- volatile uint32_t flag_buf = 0;//判斷串口傳數(shù)據(jù)是否傳完
- volatile uint32_t send_flag = 0;//WiFi設(shè)置命令標(biāo)志位 (暫存)
- char rx_buf[200] = {0};//WiFi設(shè)置命令字符串
- uint32_t i = 0;//返回字符串計(jì)數(shù)
- char edit_buf[20] = {0};//接受設(shè)置是時(shí)的字符數(shù)據(jù)
- u32 FLASH_SIZE;
- //串口3發(fā)送字符串:發(fā)給wifi
- void wifi_set(char *pstr)
- {
- //判斷當(dāng) 前是否為NULL指針
- //字符串是以'\0'(0值為結(jié)尾)
- uint32_t i = 0;
-
- while(pstr && *pstr)
- {
- rx_buf[i] = *pstr;
- i++;
- USART_SendData(USART3,*pstr++);
- while(USART_GetFlagStatus(USART3,USART_FLAG_TXE)==RESET);
- }
- send_flag = 1;
- }
- uint64_t wifi_all_set(uint64_t flag_buf)
- {
- if(flag_buf)
- {
- printf("run here1\r\n");
- if(strstr(rx_buf,"AT+CWMODE=2") != NULL && strstr(buf,"OK") != NULL)
- {
- wifi_set("AT+RST\r\n");//重啟是設(shè)置生效
- delay_ms(666);
- delay_ms(666);
- delay_ms(666);
- delay_ms(666);
- //wifi_set("AT+CWSAP="TEST","123456123456",1,3");//設(shè)置wifi為多連接模式
-
- wifi_set("AT+CIPMUX=1\r\n");//設(shè)置wifi為多連接模式
- delay_ms(666);
- delay_ms(666);
- delay_ms(666);
- wifi_set("AT+CIPSERVER=1,6666\r\n");//設(shè)置為服務(wù)器,端口號(hào)為6666
- delay_ms(666);
- delay_ms(666);
- delay_ms(666);
- wifi_set("AT+CIPSTO=6000\r\n");//設(shè)置超時(shí)時(shí)間
- delay_ms(666);
- delay_ms(666);
- delay_ms(666);
- }
- }
- else
- return 1;
-
- flag_buf = 0;
- delay_ms(666);
- delay_ms(666);
- delay_ms(666);
- return 0;
- }
- //int main(void)
- //{
- // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 中斷優(yōu)先級(jí)分組管理
- //
- // Systick_Init();//延時(shí)初始化時(shí)鐘
- // usart_init(115200);//串口1初始化
- // USART3_Init(115200);//串口3初始化
- // KEY_Init();
- // key_init1();
- // LED_Init();
- // exit_init();
- // Beep_init();
- // printf("run here\r\n");
- //
- // wifi_set("AT+CWMODE=2\r\n");//設(shè)置wifi為模式3,sta與AP共存
- // delay_ms(666);
- // wifi_all_set(flag_buf);//進(jìn)入中斷函數(shù)后,當(dāng)串口3接收完數(shù)據(jù),flag_buf = 1
- //
- //
- // //delay_ms(666);
- // //delay_ms(666);
- // //delay_ms(666);
- // //delay_ms(666);
- //
- // while(1)
- // {
- // if(PEin(3) == 0)//KEY1
- // {
- // PAout(6) = 0;//LED2
- // delay_ms(500);
- // PAout(6) = 1;//LED2
- //
- // PBout(0) = 1;
- // delay_ms(500);
- //
- // printf("=====\r\n");
- // }
- // delay_ms(500);
- // printf("=====1111\r\n");
- // }
- // //return 0;
- //}
- void USART1_IRQHandler(void) //串口1中斷服務(wù)程序
- {
- uint8_t d;
- if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中斷
- {
- //接收數(shù)據(jù)
- d = USART_ReceiveData(USART1); //讀一個(gè)發(fā)一個(gè)
-
- USART_SendData(USART3,d);
- }
- }
- void USART3_IRQHandler(void) //串口3中斷服務(wù)程序
- {
- uint8_t d;
-
- if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET) //接收中斷
- {
- //接收數(shù)據(jù)
- d = USART_ReceiveData(USART3);
-
-
- buf[i++] = d;
- if(buf[i-2] == 0x0D && buf[i-1] == 0x0A)//判斷字符串是否接收完畢
- {
- i = 0;
- flag_buf = 1;
-
- }
- if(i >= 300)//判斷字符串是否是自己需要的
- {
- i = 0;
- memset(buf,0,sizeof(buf));
- }
- //printf("%d = s\r\n",d);
- //轉(zhuǎn)發(fā)給PC顯示
- USART_SendData(USART1,d);
-
- while(USART_GetFlagStatus(USART3,USART_FLAG_TXE)==RESET);
- }
- }
- int main(void)
- {
- int n;
-
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置系統(tǒng)中斷優(yōu)先級(jí)分組2
-
- Systick_Init();//延時(shí)延時(shí)函數(shù)
- usart_init(115200);//串口1初始化
- USART3_Init(115200);//串口3初始化
- KEY_Init(); //初始化串口波特率為115200
- key_init1(); //初始化LED
- //LED_Init(); //LCD初始化
- exit_init(); //按鍵初始化
-
- init_sr04();
- printf("1234r\n");
-
- while(1)
- {
- printf("F====\r\n");
- n = get_sr04_distance()/10;
- //printf("HGFHGHGFHFHGGF====\r\n");
- printf("distace = %d cm\r\n",n);
- delay_s(1);
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
sr04.rar
(101.94 KB, 下載次數(shù): 69)
2018-4-13 10:04 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|