一、功能实现
1、红外避障:单片机通过安装在小车前端两侧的红外避障模块检测障碍物与小车间的距离,加以判断实现避障功能。
2、红外寻迹:单片机通过安装在小车底盘两侧的红外寻迹模块检测黑线与小车的相对位置,加以判断实现寻迹功能。
二、元器件选择
2.1单片机型号选择
单片机选择STM32F103C8T6,此款单片机有48个引脚,72M主频,64K Flash、20K RAM,3个普通定时器,1个高级定时器,2个SPI,2个I²C,3个串口,1个USB,1个CAN,37个可使用IO口,2个12位10通道ADC。
如此丰富的内设硬件资源足以应付大多数场合使用,相对于STM32F103同系列其他单片具有机性价比高,网络资源多、例程丰富,适合STM32入门初探与产品设计应用。
GPIO分配
main函数(按照main函数内顺序讲解)
int main(void)
{
/* 复位所有外设,初始化Flash接口和系统滴答定时器 */
HAL_Init();
/* 配置系统时钟 */
SystemClock_Config();
/**************GPIO******************************************************************/
GPIOA_Init();//初始化L298N接口
GPIOB_Init();//初始化寻迹和红外避障模块接口
/***************PWM******************************************************************/
/* 通用定时器初始化并配置PWM输出功能 */
GENERAL_TIMx_Init();
/* 启动通道PWM输出 */
HAL_TIM_PWM_Start(&htimx,TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htimx,TIM_CHANNEL_2);
TIM3->CCR1=TIM3->CCR2=250;//调车速,范围0~1000,数值越大速度越快
/* 无限循环 */
while (1)
{
// Avoid();//避障
Track();//寻迹
}
}
1.首先复位所有外设,初始化Flash接口和系统滴答定时器
2.其次配置系统时钟(对如何配置系统时钟感兴趣的可以见文章最下方链接)
3.配置GPIOA和B
void GPIOA_Init(void)
{
/* 定义IO硬件初始化结构体变量 */
GPIO_InitTypeD