|
双轮平衡小车资源分配-标准版
IO编号 资源说明 外设 备注
A12 普通IO MPU6050的INT引脚 检测MPU6050是否产生数据就绪中断
B8、B9 普通IO MPU6050 软件模拟IIC的SCL与SDA
B10、B11 串口3 蓝牙模块 遥控小车
B0 TIM3_CH3 超声波模块 捕获超声波回波脉冲,计算距离
B1 普通IO 超声波模块 给超声波模块发送开始信号
A8、B15、B14 PWMA、IO 左轮电机 电机控制信号:PWM大小、电机方向
A11、B12、B13 PWMB、IO 右轮电机 电机控制信号:PWM大小、电机方向
A0、A1 TIM2_CH1、CH2 左轮编码器 编码器采集
B6、B7 TIM4_CH1、CH2 右轮编码器 编码器采集
A6 ADC1_CH6 ADC采集 电压测量
A9、A10 串口1 MicroUSB 串口控制(单片机外设资源)
A4 普通IO LED灯
属于单片机上的外设资源 A5 普通IO 用户按键
A15、B3、B4、B5 普通IO OLED显示屏
A13、A14 SWD下载、调试 SWD接口
闲置引脚 A2、A3、A7、B2、C13、C14、C15
部分代码:
#include "main.h"
extern uint8_t OLED_GRAM[128][8];
int main(void)
{
NVIC_SetPriorityGrouping(5);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
SysTick_Config(72000);
LED_Config();
KEY_Config();
USART1_Config(9600);
BlueTooth_Config(9600,"sun","12345");
// BlueTooth_Config(9600,NULL,NULL);
OLED_Config();
Battery_Config();
Motor_Config();
Encoder_Config();
MPU6050_Config();
SR04_Config();
OLED_ShowString(8,0,16, "*123456*");//列 行 字体大小(12 16)
OLED_ShowPhoto(2,0,25,128,JCZN_Logo128_25);
OLED_ShowString(0,48,16, "Smart Blance Car");//列 行 字体大小(12 16)
OLED_UpdataGRAM();
Delay_nms(2000);
OLED_Clear();
NVIC_EnableIRQ(EXTI15_10_IRQn);
while(1)
{
if(Flag_Show==0)
{
Fanction_Show2APP(); //发送数据给APP
Fanction_Show2OLED(); //显示屏打开
}
else //使用上位机 上位机使用的时候需要严格的时序,故此时关闭app监控部分和OLED显示屏
{
Fanction_DataScope(); //开启上位机
}
DelayFlag = 1;
Delay50 = 0;
while(DelayFlag); //示波器需要50ms 高精度延时,delay函数不满足要求,故使用MPU6050中断提供50ms延时
}
}
|
|