本文主要是介绍(优作)基于STM32蓝牙控制小车系统设计(硬件+源代码+论文)竞赛作品,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基于STM32蓝牙控制小车系统设计(硬件+源代码+论文)竞赛作品
基于意法半导体与ARM公司生产的STM32F4 DISCOVERY开发板的集电机驱动模块、电源管理模块、stm32f4主控模块、蓝牙串口通信模块、android控制端模块。电机驱动模块使用了两个L298N芯片来驱动4路电机,使能端连接4路来自主控板的PWM波信号,8个输入端接主控板的8个输出端口;电源管理模块使用了LM2940-5.0芯片进行12V到5V的转换,12V用于电机模块的供电,5V用于蓝牙模块、传感器等的供电;主控模块采用了MDK编辑程序,然后下载到主控板,实现硬件与软件的交互;蓝牙串口通信模块则是采用了FBT06_LPDB针插蓝牙模块,与主控板进行串口通信,同时与android手机进行通信;android控制端模块是一个集开启蓝牙、搜索蓝牙、控制小车等功能。用户可以通过android控制端进行控制小车的运动,实现一些用户需要的功能和服务。
设置电机转向程序
改程序将电机驱动模块的8个输入端口接到了主控板的8个GPIO口,通过推挽输出,从而控制电机的转向,代码如下:
void Direction(int direction)
{
SysTick_Config(SystemCoreClock / 1000); //时钟中断设为1msRCC->AHB1ENR |= 0x00000005; //使能GPIOA和GPIOD时钟RCC->APB2ENR |= (1<<14); //使能syscfg时钟
if(direction==0)
{GPIOA->MODER &= 0xffff0000; //设置PA0,1,2,3为输出GPIOA->MODER |= 0x00005555; GPIOA->OTYPER &= 0xFFFFff00; //设置PA0,1,2,3为推挽输出GPIOA->OSPEEDR &= 0xffff0000; //设置PA0,1,2,3的输出速度为100MGPIOA->OSPEEDR |= 0x0000ffff;SYSCFG->CMPCR = 0x00000001; //使用IO补偿单元GPIOA->PUPDR &= 0xffffff00; //设置PA0,1,2,3无上拉,无下拉GPIOA->BSRRH = 0x00ff; //复位GPIOA_BSRRH寄存器GPIOA->BSRRL = 0x0055; }else{
GPIOA->MODER &= 0xffff0000; //设置PA0,1,2,3为输出GPIOA->MODER |= 0x0000005555; GPIOA->OTYPER &= 0xFFFFff00; //设置PA0,1,2,3为推挽输出GPIOA->OSPEEDR &= 0xffff0000; //设置PA0,1,2,3的输出速度为100MGPIOA->OSPEEDR |= 0x0000ffff;SYSCFG->CMPCR = 0x00000001; //使用IO补偿单元GPIOA->PUPDR &= 0xffffff00; //设置PA0,1,2,3无上拉,无下拉GPIOA->BSRRH = 0x00ff; //复位GPIOA_BSRRH寄存器GPIOA->BSRRL = 0x00AA;
}
成果展示:
资料下载:
这篇关于(优作)基于STM32蓝牙控制小车系统设计(硬件+源代码+论文)竞赛作品的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!