|
stm8紅外避障程序下載:
stm8紅外避障程序.zip
(411.73 KB, 下載次數(shù): 9)
2017-7-22 16:20 上傳
點擊文件名下載附件
stm8紅外避障程序 下載積分: 黑幣 -5
- /*****************************************************************
- * 實驗名稱及內(nèi)容:趣味實驗之壁障檢測
- * 配套書籍:《深入淺出STM8單片機入門、進階與應(yīng)用實例》
- * 交流QQ群: 305348768
- * 實驗平臺及編程人員:思修電子工作室"祥云小王子"開發(fā)版 Long
- ******************************************************************/
- #include "iostm8s208mb.h"//主控芯片的頭文件
- #include "stdio.h"//需要使用printf()函數(shù)故而包含該頭文件
- /************************常用數(shù)據(jù)類型定義*************************/
- #define u8 uint8_t
- #define u16 uint16_t
- #define u32 uint32_t
- typedef unsigned char uint8_t;
- typedef unsigned short uint16_t;
- typedef unsigned long uint32_t;
- /*************************端口/引腳定義區(qū)域***********************/
- #define Obstacle_evading PE_IDR_IDR6 //連接至避障傳感器引腳
- /**************************函數(shù)聲明區(qū)域***************************/
- void delay(u16 Count); //延時函數(shù)聲明
- void UART3_Init(void); //串口3初始化函數(shù)
- void UART3_SendByte(u8 data); //串口3發(fā)送單個字符函數(shù)
- int putchar(int ch); //發(fā)送字符重定向函數(shù)
- /**************************主函數(shù)區(qū)域*****************************/
- void main(void)
- {
- CLK_CKDIVR=0x00; //選定HSI時鐘源,配置頻率為16MHz
- delay(10); //延時等待時鐘穩(wěn)定
- UART3_Init(); //初始化串口3
- delay(50);
- PE_DDR_DDR6=0; //配置PE6端口為輸入模式
- PE_CR1_C16=1; //配置PE6端口為弱上拉輸入模式
- PE_CR2_C26=1; //使能PE6端口外部中斷
- while(1) //死循環(huán)
- {
- if(Obstacle_evading==0)//檢測到障礙物
- {
- //printf("<I>18"); //提示音1
- //delay(1000);
- printf("<G>前方有障礙物\n");
- delay(1000);
- while(!Obstacle_evading);//直到遠離障礙物
- }
- }
- }
- /****************************************************************/
- //延時函數(shù)delay(),有形參Count用于控制延時函數(shù)執(zhí)行次數(shù),無返回值
- /****************************************************************/
- void delay(u16 Count)
- {
- u8 i,j;
- while (Count--)//Count形參控制延時次數(shù)
- {
- for(i=0;i<50;i++)
- for(j=0;j<20;j++);
- }
- }
- /****************************************************************/
- //初始化函數(shù)UART3_Init(),無形參和返回值
- /****************************************************************/
- void UART3_Init(void)
- {
- //1.設(shè)定通信數(shù)據(jù)位數(shù),此處設(shè)定為8位數(shù)據(jù)位,無校驗位
- UART3_CR1 = 0x00;
- //2.設(shè)定通信停止位位數(shù),此處設(shè)定為1位停止位
- UART3_CR3 = 0x00;
- //3.配置通信波特率參數(shù),此處配置為9600bps(16MHz頻率下)
- UART3_BRR2 = 0x03;
- UART3_BRR1 = 0x68;
- //4.使能發(fā)送和接收功能
- UART3_CR2 = 0x0C;
- }
- /****************************************************************/
- //發(fā)送單字符函數(shù)UART3_SendByte(),有形參data,無返回值
- /****************************************************************/
- void UART3_SendByte(u8 data)
- {
- UART3_DR=data;//發(fā)送數(shù)據(jù)到UART3數(shù)據(jù)寄存器
- while (!(UART3_SR & 0x80));//等待發(fā)送完畢
- }
- /****************************************************************/
- //發(fā)送字符重定向函數(shù)putchar(),有形參ch,有返回值
- /****************************************************************/
- int putchar(int ch)
- {
- while((UART3_SR&0x80)==0x00);
- UART3_SendByte((u8)ch);//將Printf內(nèi)容發(fā)往串口
- return (ch);
- }
復(fù)制代碼
|
|