stm32f103c8t6五路循迹代码
时间: 2024-05-28 09:08:21 浏览: 225
STM32F103C8T6是一款常用的单片机芯片,循迹代码通常是基于该芯片进行编写的。循迹代码主要用于小车或机器人的自动寻路,是智能化控制系统中的重要组成部分。根据您的需求,可以提供一份常用的五路循迹代码。
五路循迹代码主要包含以下几个部分:
1.引脚定义:定义引脚接口和功能。
2.初始化函数:初始化各个引脚和定时器,设置控制模式等。
3.数据采集函数:采集五路循迹传感器的数据,并进行处理。
4.控制函数:根据采集到的数据,进行控制逻辑,使小车或机器人能够沿着指定路径前进。
5.主函数:调用以上函数,使程序正常运行。
以下是一份基于STM32F103C8T6的五路循迹代码,仅供参考:
```
#include "stm32f10x.h"
#define Trig PAout(0) //定义超声波发射引脚
#define Echo PAin(1) //定义超声波接收引脚
#define LeftSensor PCin(13) //定义左侧循迹传感器引脚
#define MiddleSensor PCin(14) //定义中间循迹传感器引脚
#define RightSensor PCin(15) //定义右侧循迹传感器引脚
void TIM3_Int_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
TIM_TimeBaseInitStructure.TIM_Period = arr;
TIM_TimeBaseInitStructure.TIM_Prescaler=psc;
TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_Cmd(TIM3,ENABLE);
}
void TIM3_IRQHandler(void)
{
if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET)
{
TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
Trig=1; //发射超声波
delay_us(10);
Trig=0;
while(!Echo); //等待接收超声波
TIM_Cmd(TIM2,ENABLE); //启动计时器2
while(Echo); //等待超声波结束
TIM_Cmd(TIM2,DISABLE); //关闭计时器2
u16 distance=0.034*TIM2->CNT; //计算距离
}
}
void GPIO_Int_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStructure);
}
void delay_us(u32 nus)
{
u32 temp;
SysTick->LOAD=nus*9;
SysTick->VAL=0x00;
SysTick->CTRL=0x01;
do
{
temp=SysTick->CTRL;
}while((temp&0x01)&&(!(temp&(1<<16))));
SysTick->CTRL=0x00;
SysTick->VAL=0X00;
}
int main(void)
{
SystemInit();
GPIO_Int_Init();
TIM3_Int_Init(999,71);
while(1)
{
if(!LeftSensor&&!MiddleSensor&&!RightSensor) //前方全黑,直走
{
//直走代码
}
else if(!LeftSensor&&MiddleSensor&&RightSensor) //前方黑线,直走
{
//直走代码
}
else if(LeftSensor&&!MiddleSensor&&!RightSensor) //偏左,左转
{
//左转代码
}
else if(!LeftSensor&&!MiddleSensor&&RightSensor) //偏右,右转
{
//右转代码
}
else if(LeftSensor&&MiddleSensor&&!RightSensor) //偏左,左转
{
//左转代码
}
else if(!LeftSensor&&MiddleSensor&&RightSensor) //偏右,右转
{
//右转代码
}
else if(LeftSensor&&MiddleSensor&&RightSensor) //全白停止
{
//停止代码
}
}
}
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)