stm32f103rc主控,具體看程序吧。這是初始程序,想要完整的私聊。
單片機(jī)源程序如下:
- #include "delay.h"
- #include "uart.h"
- #include "LobotServoController.h"
- #include "bool.h"
- #include "work.h"
- #include "lcd1602.h"
- #include "timer.h"
- #include "wave.h"
- #include "FreeRTOS.h"
- #include "task.h"
- #include "queue.h"
-
- //外設(shè)引腳
- /*
- 1602: -、+、-、pb15/pb14/pb13、pc0-pc7、+/-
- 超聲波:trig pb5/echo pb6
- */
- extern u16 Distance;
- void vTask0_length( void *pvParameters) //測(cè)距任務(wù)
- {
- u8 i=0;
- while(1)
- {
- if(i==0)
- {
- GPIO_SetBits(GPIOB,GPIO_Pin_10); i=1;
- }
- else
- {
- GPIO_ResetBits(GPIOB,GPIO_Pin_10); i=0;
- }
- Wave_SRD_Strat();
- if(Distance>=200) Distance=200;
- //LCD1602_Show_Str(0,0,"Distance");
- //LCD1602_Show_num(0,9,Distance);
- vTaskDelay(300 / portTICK_RATE_MS);
- }
- }
- void vTask0_work( void *pvParameters) //機(jī)器人動(dòng)作任務(wù)
- {
- u8 head=2;
- stop();
- hold();
- while(1)
- {
- if(Distance<=40) //先左邊再右邊測(cè)距,若都小于閾值,后退
- {
- if(head==2)
- {
- head_left(); head=1;
- }
- else if(head==1)
- {
- head_right(); head=3;
- }
- else
- {
- turn_back(); head_centre(); head=2;
- }
- }
- else
- {
- if(head==1)
- {
- turn_left(); head_centre(); head=2;
- }
- else if(head==2) ahead();
- else
- {
- turn_right(); head_centre(); head=2;
- }
- }
- vTaskDelay(300 / portTICK_RATE_MS);
- }
- }
- int main(void)
- {
- SystemInit();//系統(tǒng)時(shí)鐘等初始化
- delay_init(); //延時(shí)初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
- uartInit(9600);//串口初始化為9600
- GPIO_Configuration();
- LCD1602_Init();
- Timer_SRD_Init(5000,7199);
- Wave_SRD_Init();
- xTaskCreate(vTask0_length,"length",200,NULL,1,NULL);
- xTaskCreate(vTask0_work,"work",200,NULL,2,NULL);
-
- vTaskStartScheduler(); //開(kāi)啟任務(wù)調(diào)度
- }
-
復(fù)制代碼
初始化部分分享給大家,請(qǐng)多多指教:
sixfeet-robot初始.rar
(599.4 KB, 下載次數(shù): 29)
2018-5-19 02:22 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|