標(biāo)題:
stm8紅外避障程序
[打印本頁]
作者:
晴楓
時間:
2017-7-22 16:21
標(biāo)題:
stm8紅外避障程序
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ù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1