主控板程序设计:主函数与串口接收模块详解.pdfVIP

  • 0
  • 0
  • 约2.05千字
  • 约 3页
  • 2026-02-14 发布于北京
  • 举报

主控板程序设计:主函数与串口接收模块详解.pdf

控板程序设计

1、main序设计

主函数主要分为延迟时间初始化、串口接收模块程序、电机初始化三部分。

主函数的流程图如图1所示:

图1主函数流程图

主函数程序代码如下:

intmain(void)

{

delay_init(168);//延迟时间初始化

uart_init(9600);//串口初始化

Direction(1);//电机初始化

delay_ms(10);//延迟10ms

printf(welcometocontrolthesmartcar!:\n\r);//输入语句

while(1);

}

2、串口接收模块程序

主控板接收到蓝牙从串口传来的数据后存入Res变量,然后通过分支程序来

选择执行前进、后退、左转、右转和停止等功能。该模块的程序流程图如图2

所示:

图2串口接收程序流程图

3、修改PWM输出值程序

该程序是基于“的实现”中的程序改编的。代码如下:

中断优先级分组抢占:响应

打开时钟

第二功能,推挽输出

输出速度为

上拉

的第二功能为

打开时钟

对时钟进行分频,使得计数频率为

周期为

产生一次更新时间

模式

模式

TIM3-CCR4=duty4;//4路PWM

TIM3-CCER|=0x1111;//使能比较输出

TIM3-CCMR1|=0x0808;//启动预装载

TIM3-CCMR2|=0x8080;

TIM3-CR1|=1;//开始计时

}

4、设置电机转向程序

改程序将电机驱动模块的8个输入端口接到了主控板的8个GPIO口,通过推挽输出,从而

控制电机的转向,代码如下:

voidDirection(intdirection)

{

SysTick_Config(SystemCoreClock/1000);//时钟中断设为1ms

RCC-AHB1ENR|=0//使能GPIOA和GPIOD时钟

RCC-APB2ENR|=(114);//使能syscfg时钟

if(direction==0)

{

GPIOA-MODER=0xffff0000;//设置PA0,1,2,3为输出

GPIOA-MODER|=0

GPIOA-OTYPER=0xFFFFff00;//设置PA0,1,2,3为推挽输出

GPIOA-OSPEEDR=0xffff0000;//设置PA0,1,2,3的输出速度为100M

GPIOA-OSPEEDR|=0x0000ffff;

SYSCFG-CMPCR=0//使用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的输出速度为100M

GPIOA-OSPEEDR|=0x0000ffff;

SYSCFG-CMPCR=0//使用IO补偿单元

GPIOA-PUPDR=0xffffff00;//设置PA0,1,2,3无上拉,无下拉

GPIOA-BSRRH=0x00ff;//复位GPIOA_BSRRH寄存器

GPIOA-BSRRL

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档