1、完成ADC采集
2、完成电机简单控制 3、完成通过ADC值控制电机的向下运行,并停止 4、问题:PWM控制电机的过程中,单步可以运转,全速不动作,中断发现,停止的时间比运行的时间长,这个有待进一步调试main
parent
488b80690c
commit
557dcffd18
|
|
@ -2,33 +2,99 @@
|
|||
#include "motor_driver.h"
|
||||
#include "delay.h"
|
||||
// 全局变量
|
||||
static uint8_t pwm_duty = 0; // PWM占空比 0-100
|
||||
static MotorState motor_dir = MOTOR_STOP;
|
||||
|
||||
static uint8_t L_pwm_duty = 0; // PWM占空比 0-100
|
||||
static uint8_t M_pwm_duty = 0; // PWM占空比 0-100
|
||||
static uint8_t R_pwm_duty = 0; // PWM占空比 0-100
|
||||
static MotorState L_motor_dir = MOTOR_STOP;
|
||||
static MotorState M_motor_dir = MOTOR_STOP;
|
||||
static MotorState R_motor_dir = MOTOR_STOP;
|
||||
// GPIO初始化
|
||||
void DRV8832_GPIO_Init(void) {
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
|
||||
//左电机 引脚初始化
|
||||
// 使能GPIOE时钟
|
||||
RCC_AHB1PeriphClockCmd(MOTOR_IN1_GPIO_CLK, ENABLE);
|
||||
RCC_AHB1PeriphClockCmd(L_MOTOR_IN1_GPIO_CLK, ENABLE);
|
||||
|
||||
// 配置IN1 (PE9) 和 IN2 (PE13) 为输出
|
||||
GPIO_InitStructure.GPIO_Pin = MOTOR_IN1_GPIO_PIN | MOTOR_IN2_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Pin = L_MOTOR_IN1_GPIO_PIN | L_MOTOR_IN2_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; // 推挽输出
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
GPIO_Init(MOTOR_IN1_GPIO_PORT, &GPIO_InitStructure);
|
||||
GPIO_Init(L_MOTOR_IN1_GPIO_PORT, &GPIO_InitStructure);
|
||||
|
||||
// 配置FAULTN (PE4) 为输入
|
||||
GPIO_InitStructure.GPIO_Pin = MOTOR_FAULT_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Pin = L_MOTOR_FAULT_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; // 上拉
|
||||
GPIO_Init(MOTOR_FAULT_GPIO_PORT, &GPIO_InitStructure);
|
||||
GPIO_Init(L_MOTOR_FAULT_GPIO_PORT, &GPIO_InitStructure);
|
||||
|
||||
// 初始状态:停止电机
|
||||
GPIO_ResetBits(MOTOR_IN1_GPIO_PORT, MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(MOTOR_IN2_GPIO_PORT, MOTOR_IN2_GPIO_PIN);
|
||||
GPIO_ResetBits(L_MOTOR_IN1_GPIO_PORT, L_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(L_MOTOR_IN2_GPIO_PORT, L_MOTOR_IN2_GPIO_PIN);
|
||||
|
||||
//===========================================================================
|
||||
//中电机 引脚初始化
|
||||
// 使能GPIOE时钟
|
||||
RCC_AHB1PeriphClockCmd(M_MOTOR_IN1_GPIO_CLK, ENABLE);
|
||||
// 配置IN1 (PB3)
|
||||
GPIO_InitStructure.GPIO_Pin = M_MOTOR_IN1_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; // 推挽输出
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
GPIO_Init(M_MOTOR_IN1_GPIO_PORT, &GPIO_InitStructure);
|
||||
|
||||
// 配置 IN2 (PE14) 为输出
|
||||
GPIO_InitStructure.GPIO_Pin = M_MOTOR_IN2_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; // 推挽输出
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
GPIO_Init(M_MOTOR_IN2_GPIO_PORT, &GPIO_InitStructure);
|
||||
|
||||
// 配置FAULTN (PE5) 为输入
|
||||
GPIO_InitStructure.GPIO_Pin = M_MOTOR_FAULT_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; // 上拉
|
||||
GPIO_Init(M_MOTOR_FAULT_GPIO_PORT, &GPIO_InitStructure);
|
||||
|
||||
// 初始状态:停止电机
|
||||
GPIO_ResetBits(M_MOTOR_IN1_GPIO_PORT, M_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(M_MOTOR_IN2_GPIO_PORT, M_MOTOR_IN2_GPIO_PIN);
|
||||
//===========================================================================
|
||||
//右电机 引脚初始化
|
||||
// 使能GPIOE时钟
|
||||
RCC_AHB1PeriphClockCmd(R_MOTOR_IN1_GPIO_CLK, ENABLE);
|
||||
// 配置IN1 (PD15)
|
||||
GPIO_InitStructure.GPIO_Pin = R_MOTOR_IN1_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; // 推挽输出
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
GPIO_Init(R_MOTOR_IN1_GPIO_PORT, &GPIO_InitStructure);
|
||||
|
||||
// 配置 IN2 (PE15) 为输出
|
||||
GPIO_InitStructure.GPIO_Pin = R_MOTOR_IN2_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; // 推挽输出
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
GPIO_Init(R_MOTOR_IN2_GPIO_PORT, &GPIO_InitStructure);
|
||||
|
||||
// 配置FAULTN (PE6) 为输入
|
||||
GPIO_InitStructure.GPIO_Pin = R_MOTOR_FAULT_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; // 上拉
|
||||
GPIO_Init(R_MOTOR_FAULT_GPIO_PORT, &GPIO_InitStructure);
|
||||
|
||||
// 初始状态:停止电机
|
||||
GPIO_ResetBits(R_MOTOR_IN1_GPIO_PORT, R_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(R_MOTOR_IN2_GPIO_PORT, R_MOTOR_IN2_GPIO_PIN);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
// 初始化DRV8832
|
||||
|
|
@ -36,58 +102,16 @@ void DRV8832_Init(void) {
|
|||
DRV8832_GPIO_Init();
|
||||
}
|
||||
|
||||
//=====================================================================================
|
||||
// 电机基础控制函数
|
||||
void Motor_Control(MotorState state) {
|
||||
switch(state) {
|
||||
case MOTOR_STOP: // IN1=0, IN2=0
|
||||
GPIO_ResetBits(MOTOR_IN1_GPIO_PORT, MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(MOTOR_IN2_GPIO_PORT, MOTOR_IN2_GPIO_PIN);
|
||||
break;
|
||||
|
||||
case MOTOR_FORWARD: // IN1=1, IN2=0
|
||||
GPIO_SetBits(MOTOR_IN1_GPIO_PORT, MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(MOTOR_IN2_GPIO_PORT, MOTOR_IN2_GPIO_PIN);
|
||||
break;
|
||||
|
||||
case MOTOR_REVERSE: // IN1=0, IN2=1
|
||||
GPIO_ResetBits(MOTOR_IN1_GPIO_PORT, MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_SetBits(MOTOR_IN2_GPIO_PORT, MOTOR_IN2_GPIO_PIN);
|
||||
break;
|
||||
|
||||
case MOTOR_BRAKE: // IN1=1, IN2=1
|
||||
GPIO_SetBits(MOTOR_IN1_GPIO_PORT, MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_SetBits(MOTOR_IN2_GPIO_PORT, MOTOR_IN2_GPIO_PIN);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 获取故障状态
|
||||
uint8_t Motor_GetFaultStatus(void) {
|
||||
// FAULTN引脚为低电平时表示故障
|
||||
if (GPIO_ReadInputDataBit(MOTOR_FAULT_GPIO_PORT, MOTOR_FAULT_GPIO_PIN) == Bit_RESET) {
|
||||
return 1; // 故障
|
||||
}
|
||||
return 0; // 正常
|
||||
}
|
||||
|
||||
// 安全的方向切换(避免电流冲击)
|
||||
void Motor_SafeDirectionChange(MotorState new_direction) {
|
||||
// 先刹车
|
||||
Motor_Control(MOTOR_BRAKE);
|
||||
delay_ms(5); // 5ms延迟
|
||||
|
||||
// 再切换到新方向
|
||||
Motor_Control(new_direction);
|
||||
}
|
||||
|
||||
|
||||
// 使用TIM2实现软件PWM
|
||||
#define PWM_FREQUENCY 20000 // 20kHz PWM频率
|
||||
#define PWM_RESOLUTION 100 // 100级调速分辨率
|
||||
|
||||
static uint8_t pwm_counter = 0; // PWM计数器
|
||||
|
||||
static uint8_t L_pwm_counter = 0; // PWM计数器
|
||||
static uint8_t M_pwm_counter = 0; // PWM计数器
|
||||
static uint8_t R_pwm_counter = 0; // PWM计数器
|
||||
// 定时器初始化
|
||||
void PWM_Timer_Init(void) {
|
||||
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
|
||||
|
|
@ -118,65 +142,337 @@ void PWM_Timer_Init(void) {
|
|||
}
|
||||
|
||||
// 定时器中断处理函数
|
||||
void TIM2_IRQHandler(void) {
|
||||
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) {
|
||||
void TIM2_IRQHandler(void)
|
||||
{
|
||||
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
|
||||
{
|
||||
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
|
||||
|
||||
pwm_counter++;
|
||||
if (pwm_counter >= PWM_RESOLUTION) {
|
||||
pwm_counter = 0;
|
||||
|
||||
|
||||
{ //左电机运行
|
||||
L_pwm_counter++;
|
||||
if (L_pwm_counter >= PWM_RESOLUTION)
|
||||
{
|
||||
L_pwm_counter = 0;
|
||||
}
|
||||
|
||||
// 根据占空比和方向控制电机
|
||||
if (motor_dir == MOTOR_FORWARD) {
|
||||
if (pwm_counter < pwm_duty) {
|
||||
if (L_motor_dir == MOTOR_FORWARD) {
|
||||
if (L_pwm_counter < L_pwm_duty) {
|
||||
// 正转:IN1=1, IN2=0
|
||||
GPIO_SetBits(MOTOR_IN1_GPIO_PORT, MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(MOTOR_IN2_GPIO_PORT, MOTOR_IN2_GPIO_PIN);
|
||||
GPIO_SetBits(L_MOTOR_IN1_GPIO_PORT, L_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(L_MOTOR_IN2_GPIO_PORT, L_MOTOR_IN2_GPIO_PIN);
|
||||
} else {
|
||||
// 停止(滑行)
|
||||
GPIO_ResetBits(MOTOR_IN1_GPIO_PORT, MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(MOTOR_IN2_GPIO_PORT, MOTOR_IN2_GPIO_PIN);
|
||||
GPIO_ResetBits(L_MOTOR_IN1_GPIO_PORT, L_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(L_MOTOR_IN2_GPIO_PORT, L_MOTOR_IN2_GPIO_PIN);
|
||||
}
|
||||
}
|
||||
else if (motor_dir == MOTOR_REVERSE) {
|
||||
if (pwm_counter < pwm_duty) {
|
||||
else if (L_motor_dir == MOTOR_REVERSE) {
|
||||
if (L_pwm_counter < L_pwm_duty) {
|
||||
// 反转:IN1=0, IN2=1
|
||||
GPIO_ResetBits(MOTOR_IN1_GPIO_PORT, MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_SetBits(MOTOR_IN2_GPIO_PORT, MOTOR_IN2_GPIO_PIN);
|
||||
GPIO_ResetBits(L_MOTOR_IN1_GPIO_PORT, L_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_SetBits(L_MOTOR_IN2_GPIO_PORT, L_MOTOR_IN2_GPIO_PIN);
|
||||
} else {
|
||||
// 停止(滑行)
|
||||
GPIO_ResetBits(MOTOR_IN1_GPIO_PORT, MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(MOTOR_IN2_GPIO_PORT, MOTOR_IN2_GPIO_PIN);
|
||||
GPIO_ResetBits(L_MOTOR_IN1_GPIO_PORT, L_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(L_MOTOR_IN2_GPIO_PORT, L_MOTOR_IN2_GPIO_PIN);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// 停止状态
|
||||
GPIO_ResetBits(MOTOR_IN1_GPIO_PORT, MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(MOTOR_IN2_GPIO_PORT, MOTOR_IN2_GPIO_PIN);
|
||||
GPIO_ResetBits(L_MOTOR_IN1_GPIO_PORT, L_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(L_MOTOR_IN2_GPIO_PORT, L_MOTOR_IN2_GPIO_PIN);
|
||||
}
|
||||
}
|
||||
//--------------------------------------------------------------------------------
|
||||
{ //中电机运行
|
||||
M_pwm_counter++;
|
||||
if (M_pwm_counter >= PWM_RESOLUTION)
|
||||
{
|
||||
M_pwm_counter = 0;
|
||||
}
|
||||
|
||||
// 根据占空比和方向控制电机
|
||||
if (M_motor_dir == MOTOR_FORWARD) {
|
||||
if (M_pwm_counter < M_pwm_duty) {
|
||||
// 正转:IN1=1, IN2=0
|
||||
GPIO_SetBits(M_MOTOR_IN1_GPIO_PORT, M_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(M_MOTOR_IN2_GPIO_PORT, M_MOTOR_IN2_GPIO_PIN);
|
||||
} else {
|
||||
// 停止(滑行)
|
||||
GPIO_ResetBits(M_MOTOR_IN1_GPIO_PORT, M_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(M_MOTOR_IN2_GPIO_PORT, M_MOTOR_IN2_GPIO_PIN);
|
||||
}
|
||||
}
|
||||
else if (M_motor_dir == MOTOR_REVERSE) {
|
||||
if (M_pwm_counter < M_pwm_duty) {
|
||||
// 反转:IN1=0, IN2=1
|
||||
GPIO_ResetBits(M_MOTOR_IN1_GPIO_PORT, M_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_SetBits(M_MOTOR_IN2_GPIO_PORT, M_MOTOR_IN2_GPIO_PIN);
|
||||
} else {
|
||||
// 停止(滑行)
|
||||
GPIO_ResetBits(M_MOTOR_IN1_GPIO_PORT, M_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(M_MOTOR_IN2_GPIO_PORT, M_MOTOR_IN2_GPIO_PIN);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// 停止状态
|
||||
GPIO_ResetBits(M_MOTOR_IN1_GPIO_PORT, M_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(M_MOTOR_IN2_GPIO_PORT, M_MOTOR_IN2_GPIO_PIN);
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
{ //右电机运行
|
||||
R_pwm_counter++;
|
||||
if (R_pwm_counter >= PWM_RESOLUTION)
|
||||
{
|
||||
R_pwm_counter = 0;
|
||||
}
|
||||
|
||||
// 根据占空比和方向控制电机
|
||||
if (R_motor_dir == MOTOR_FORWARD)
|
||||
{
|
||||
if (R_pwm_counter < R_pwm_duty) {
|
||||
// 正转:IN1=1, IN2=0
|
||||
GPIO_SetBits(R_MOTOR_IN1_GPIO_PORT, R_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(R_MOTOR_IN2_GPIO_PORT, R_MOTOR_IN2_GPIO_PIN);
|
||||
} else {
|
||||
// 停止(滑行)
|
||||
GPIO_ResetBits(R_MOTOR_IN1_GPIO_PORT, R_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(R_MOTOR_IN2_GPIO_PORT, R_MOTOR_IN2_GPIO_PIN);
|
||||
}
|
||||
}
|
||||
else if (R_motor_dir == MOTOR_REVERSE)
|
||||
{
|
||||
if (R_pwm_counter < R_pwm_duty) {
|
||||
// 反转:IN1=0, IN2=1
|
||||
GPIO_ResetBits(R_MOTOR_IN1_GPIO_PORT, R_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_SetBits(R_MOTOR_IN2_GPIO_PORT, R_MOTOR_IN2_GPIO_PIN);
|
||||
} else {
|
||||
// 停止(滑行)
|
||||
GPIO_ResetBits(R_MOTOR_IN1_GPIO_PORT, R_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(R_MOTOR_IN2_GPIO_PORT, R_MOTOR_IN2_GPIO_PIN);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// 停止状态
|
||||
GPIO_ResetBits(R_MOTOR_IN1_GPIO_PORT, R_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(R_MOTOR_IN2_GPIO_PORT, R_MOTOR_IN2_GPIO_PIN);
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------------
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// 设置电机速度和方向
|
||||
void Motor_SetSpeed(uint8_t speed, MotorState direction) {
|
||||
//=========电机速度和方向设置================================================
|
||||
// 设置左电机速度和方向
|
||||
void L_Motor_SetSpeed(uint8_t speed, MotorState direction)
|
||||
{
|
||||
// 限制速度范围
|
||||
if (speed > 100) speed = 100;
|
||||
|
||||
// 如果速度为0或100%,直接使用基础控制
|
||||
if (speed == 0) {
|
||||
motor_dir = MOTOR_STOP;
|
||||
pwm_duty = 0;
|
||||
Motor_Control(MOTOR_STOP);
|
||||
L_motor_dir = MOTOR_STOP;
|
||||
L_pwm_duty = 0;
|
||||
L_Motor_Control(MOTOR_STOP);
|
||||
}
|
||||
else if (speed == 100) {
|
||||
motor_dir = direction;
|
||||
pwm_duty = 100;
|
||||
Motor_Control(direction);
|
||||
L_motor_dir = direction;
|
||||
L_pwm_duty = 100;
|
||||
L_Motor_Control(direction);
|
||||
}
|
||||
else {
|
||||
// 设置PWM参数
|
||||
motor_dir = direction;
|
||||
pwm_duty = speed; // 直接使用百分比
|
||||
L_motor_dir = direction;
|
||||
L_pwm_duty = speed; // 直接使用百分比
|
||||
}
|
||||
}
|
||||
|
||||
// 设置中电机速度和方向
|
||||
void M_Motor_SetSpeed(uint8_t speed, MotorState direction)
|
||||
{
|
||||
// 限制速度范围
|
||||
if (speed > 100) speed = 100;
|
||||
|
||||
// 如果速度为0或100%,直接使用基础控制
|
||||
if (speed == 0) {
|
||||
M_motor_dir = MOTOR_STOP;
|
||||
M_pwm_duty = 0;
|
||||
M_Motor_Control(MOTOR_STOP);
|
||||
}
|
||||
else if (speed == 100) {
|
||||
M_motor_dir = direction;
|
||||
M_pwm_duty = 100;
|
||||
M_Motor_Control(direction);
|
||||
}
|
||||
else {
|
||||
// 设置PWM参数
|
||||
M_motor_dir = direction;
|
||||
M_pwm_duty = speed; // 直接使用百分比
|
||||
}
|
||||
}
|
||||
|
||||
// 设置右电机速度和方向
|
||||
void R_Motor_SetSpeed(uint8_t speed, MotorState direction)
|
||||
{
|
||||
// 限制速度范围
|
||||
if (speed > 100) speed = 100;
|
||||
|
||||
// 如果速度为0或100%,直接使用基础控制
|
||||
if (speed == 0) {
|
||||
R_motor_dir = MOTOR_STOP;
|
||||
R_pwm_duty = 0;
|
||||
R_Motor_Control(MOTOR_STOP);
|
||||
}
|
||||
else if (speed == 100) {
|
||||
R_motor_dir = direction;
|
||||
R_pwm_duty = 100;
|
||||
R_Motor_Control(direction);
|
||||
}
|
||||
else {
|
||||
// 设置PWM参数
|
||||
R_motor_dir = direction;
|
||||
R_pwm_duty = speed; // 直接使用百分比
|
||||
}
|
||||
}
|
||||
//=====================电机直接控制================================================================
|
||||
// 左电机基础控制函数
|
||||
void L_Motor_Control(MotorState state)
|
||||
{
|
||||
switch(state) {
|
||||
case MOTOR_STOP: // IN1=0, IN2=0
|
||||
GPIO_ResetBits(L_MOTOR_IN1_GPIO_PORT, L_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(L_MOTOR_IN2_GPIO_PORT, L_MOTOR_IN2_GPIO_PIN);
|
||||
break;
|
||||
|
||||
case MOTOR_FORWARD: // IN1=1, IN2=0
|
||||
GPIO_SetBits(L_MOTOR_IN1_GPIO_PORT, L_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(L_MOTOR_IN2_GPIO_PORT, L_MOTOR_IN2_GPIO_PIN);
|
||||
break;
|
||||
|
||||
case MOTOR_REVERSE: // IN1=0, IN2=1
|
||||
GPIO_ResetBits(L_MOTOR_IN1_GPIO_PORT, L_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_SetBits(L_MOTOR_IN2_GPIO_PORT, L_MOTOR_IN2_GPIO_PIN);
|
||||
break;
|
||||
|
||||
case MOTOR_BRAKE: // IN1=1, IN2=1
|
||||
GPIO_SetBits(L_MOTOR_IN1_GPIO_PORT, L_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_SetBits(L_MOTOR_IN2_GPIO_PORT, L_MOTOR_IN2_GPIO_PIN);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 中电机基础控制函数
|
||||
void M_Motor_Control(MotorState state)
|
||||
{
|
||||
switch(state) {
|
||||
case MOTOR_STOP: // IN1=0, IN2=0
|
||||
GPIO_ResetBits(M_MOTOR_IN1_GPIO_PORT, M_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(M_MOTOR_IN2_GPIO_PORT, M_MOTOR_IN2_GPIO_PIN);
|
||||
break;
|
||||
|
||||
case MOTOR_FORWARD: // IN1=1, IN2=0
|
||||
GPIO_SetBits(M_MOTOR_IN1_GPIO_PORT, M_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(M_MOTOR_IN2_GPIO_PORT, M_MOTOR_IN2_GPIO_PIN);
|
||||
break;
|
||||
|
||||
case MOTOR_REVERSE: // IN1=0, IN2=1
|
||||
GPIO_ResetBits(M_MOTOR_IN1_GPIO_PORT, M_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_SetBits(M_MOTOR_IN2_GPIO_PORT, M_MOTOR_IN2_GPIO_PIN);
|
||||
break;
|
||||
|
||||
case MOTOR_BRAKE: // IN1=1, IN2=1
|
||||
GPIO_SetBits(M_MOTOR_IN1_GPIO_PORT, M_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_SetBits(M_MOTOR_IN2_GPIO_PORT, M_MOTOR_IN2_GPIO_PIN);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 右电机基础控制函数
|
||||
void R_Motor_Control(MotorState state)
|
||||
{
|
||||
switch(state) {
|
||||
case MOTOR_STOP: // IN1=0, IN2=0
|
||||
GPIO_ResetBits(R_MOTOR_IN1_GPIO_PORT, R_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(R_MOTOR_IN2_GPIO_PORT, R_MOTOR_IN2_GPIO_PIN);
|
||||
break;
|
||||
|
||||
case MOTOR_FORWARD: // IN1=1, IN2=0
|
||||
GPIO_SetBits(R_MOTOR_IN1_GPIO_PORT, R_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_ResetBits(R_MOTOR_IN2_GPIO_PORT, R_MOTOR_IN2_GPIO_PIN);
|
||||
break;
|
||||
|
||||
case MOTOR_REVERSE: // IN1=0, IN2=1
|
||||
GPIO_ResetBits(R_MOTOR_IN1_GPIO_PORT, R_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_SetBits(R_MOTOR_IN2_GPIO_PORT, R_MOTOR_IN2_GPIO_PIN);
|
||||
break;
|
||||
|
||||
case MOTOR_BRAKE: // IN1=1, IN2=1
|
||||
GPIO_SetBits(R_MOTOR_IN1_GPIO_PORT, R_MOTOR_IN1_GPIO_PIN);
|
||||
GPIO_SetBits(R_MOTOR_IN2_GPIO_PORT, R_MOTOR_IN2_GPIO_PIN);
|
||||
break;
|
||||
}
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------
|
||||
// 获取故障状态
|
||||
uint8_t L_Motor_GetFaultStatus(void) {
|
||||
// FAULTN引脚为低电平时表示故障
|
||||
if (GPIO_ReadInputDataBit(L_MOTOR_FAULT_GPIO_PORT, L_MOTOR_FAULT_GPIO_PIN) == Bit_RESET) {
|
||||
return 1; // 故障
|
||||
}
|
||||
return 0; // 正常
|
||||
}
|
||||
|
||||
// 安全的方向切换(避免电流冲击)
|
||||
void L_Motor_SafeDirectionChange(MotorState new_direction) {
|
||||
// 先刹车
|
||||
L_Motor_Control(MOTOR_BRAKE);
|
||||
delay_ms(5); // 5ms延迟
|
||||
|
||||
// 再切换到新方向
|
||||
L_Motor_Control(new_direction);
|
||||
}
|
||||
|
||||
|
||||
// 获取故障状态
|
||||
uint8_t M_Motor_GetFaultStatus(void) {
|
||||
// FAULTN引脚为低电平时表示故障
|
||||
if (GPIO_ReadInputDataBit(M_MOTOR_FAULT_GPIO_PORT, M_MOTOR_FAULT_GPIO_PIN) == Bit_RESET) {
|
||||
return 1; // 故障
|
||||
}
|
||||
return 0; // 正常
|
||||
}
|
||||
|
||||
// 安全的方向切换(避免电流冲击)
|
||||
void M_Motor_SafeDirectionChange(MotorState new_direction) {
|
||||
// 先刹车
|
||||
M_Motor_Control(MOTOR_BRAKE);
|
||||
delay_ms(5); // 5ms延迟
|
||||
|
||||
// 再切换到新方向
|
||||
M_Motor_Control(new_direction);
|
||||
}
|
||||
|
||||
// 获取故障状态
|
||||
uint8_t R_Motor_GetFaultStatus(void) {
|
||||
// FAULTN引脚为低电平时表示故障
|
||||
if (GPIO_ReadInputDataBit(R_MOTOR_FAULT_GPIO_PORT, R_MOTOR_FAULT_GPIO_PIN) == Bit_RESET) {
|
||||
return 1; // 故障
|
||||
}
|
||||
return 0; // 正常
|
||||
}
|
||||
|
||||
// 安全的方向切换(避免电流冲击)
|
||||
void R_Motor_SafeDirectionChange(MotorState new_direction) {
|
||||
// 先刹车
|
||||
R_Motor_Control(MOTOR_BRAKE);
|
||||
delay_ms(5); // 5ms延迟
|
||||
|
||||
// 再切换到新方向
|
||||
R_Motor_Control(new_direction);
|
||||
}
|
||||
|
|
@ -7,18 +7,47 @@
|
|||
#include "stm32f4xx_rcc.h"
|
||||
#include "stm32f4xx_tim.h"
|
||||
|
||||
// Òý½Å¶¨Òå
|
||||
#define MOTOR_IN1_GPIO_PORT GPIOE
|
||||
#define MOTOR_IN1_GPIO_PIN GPIO_Pin_9
|
||||
#define MOTOR_IN1_GPIO_CLK RCC_AHB1Periph_GPIOE
|
||||
// 电机左 引脚定义 //PE9 PE13 PE4
|
||||
#define L_MOTOR_IN1_GPIO_PORT GPIOE
|
||||
#define L_MOTOR_IN1_GPIO_PIN GPIO_Pin_9
|
||||
#define L_MOTOR_IN1_GPIO_CLK RCC_AHB1Periph_GPIOE
|
||||
|
||||
#define MOTOR_IN2_GPIO_PORT GPIOE
|
||||
#define MOTOR_IN2_GPIO_PIN GPIO_Pin_13
|
||||
#define MOTOR_IN2_GPIO_CLK RCC_AHB1Periph_GPIOE
|
||||
#define L_MOTOR_IN2_GPIO_PORT GPIOE
|
||||
#define L_MOTOR_IN2_GPIO_PIN GPIO_Pin_13
|
||||
#define L_MOTOR_IN2_GPIO_CLK RCC_AHB1Periph_GPIOE
|
||||
|
||||
#define MOTOR_FAULT_GPIO_PORT GPIOE
|
||||
#define MOTOR_FAULT_GPIO_PIN GPIO_Pin_4
|
||||
#define MOTOR_FAULT_GPIO_CLK RCC_AHB1Periph_GPIOE
|
||||
#define L_MOTOR_FAULT_GPIO_PORT GPIOE
|
||||
#define L_MOTOR_FAULT_GPIO_PIN GPIO_Pin_4
|
||||
#define L_MOTOR_FAULT_GPIO_CLK RCC_AHB1Periph_GPIOE
|
||||
|
||||
|
||||
|
||||
|
||||
// 电机中 引脚定义 //PB3 PE14 PE5
|
||||
#define M_MOTOR_IN1_GPIO_PORT GPIOB
|
||||
#define M_MOTOR_IN1_GPIO_PIN GPIO_Pin_3
|
||||
#define M_MOTOR_IN1_GPIO_CLK RCC_AHB1Periph_GPIOB
|
||||
|
||||
#define M_MOTOR_IN2_GPIO_PORT GPIOE
|
||||
#define M_MOTOR_IN2_GPIO_PIN GPIO_Pin_14
|
||||
#define M_MOTOR_IN2_GPIO_CLK RCC_AHB1Periph_GPIOE
|
||||
|
||||
#define M_MOTOR_FAULT_GPIO_PORT GPIOE
|
||||
#define M_MOTOR_FAULT_GPIO_PIN GPIO_Pin_5
|
||||
#define M_MOTOR_FAULT_GPIO_CLK RCC_AHB1Periph_GPIOE
|
||||
|
||||
// 电机右 引脚定义 //PD15 PE15 PE6
|
||||
#define R_MOTOR_IN1_GPIO_PORT GPIOD
|
||||
#define R_MOTOR_IN1_GPIO_PIN GPIO_Pin_15
|
||||
#define R_MOTOR_IN1_GPIO_CLK RCC_AHB1Periph_GPIOD
|
||||
|
||||
#define R_MOTOR_IN2_GPIO_PORT GPIOE
|
||||
#define R_MOTOR_IN2_GPIO_PIN GPIO_Pin_15
|
||||
#define R_MOTOR_IN2_GPIO_CLK RCC_AHB1Periph_GPIOE
|
||||
|
||||
#define R_MOTOR_FAULT_GPIO_PORT GPIOE
|
||||
#define R_MOTOR_FAULT_GPIO_PIN GPIO_Pin_6
|
||||
#define R_MOTOR_FAULT_GPIO_CLK RCC_AHB1Periph_GPIOE
|
||||
|
||||
// 电机状态
|
||||
typedef enum {
|
||||
|
|
@ -34,5 +63,7 @@ void Motor_Control(MotorState state);
|
|||
uint8_t Motor_GetFaultStatus(void);
|
||||
void Motor_SetSpeed(uint8_t speed, MotorState direction);
|
||||
void PWM_Timer_Init(void);
|
||||
|
||||
void L_Motor_Control(MotorState state);
|
||||
void M_Motor_Control(MotorState state);
|
||||
void R_Motor_Control(MotorState state);
|
||||
#endif /* __MOTOR_DRIVER_H */
|
||||
BIN
OBJ/USART.axf
BIN
OBJ/USART.axf
Binary file not shown.
|
|
@ -3,45 +3,48 @@
|
|||
<pre>
|
||||
<h1>µVision Build Log</h1>
|
||||
<h2>Tool Versions:</h2>
|
||||
IDE-Version: ¦ÌVision V5.25.3.0
|
||||
Copyright (C) 2018 ARM Ltd and ARM Germany GmbH. All rights reserved.
|
||||
License Information: cgy cgy, cgy, LIC=CRMFW-QWL2E-RC0JZ-J6WMG-6WJZU-2F249
|
||||
IDE-Version: ¦ÌVision V5.38.0.0
|
||||
Copyright (C) 2022 ARM Ltd and ARM Germany GmbH. All rights reserved.
|
||||
License Information: baibaila3 baibaila3@163.com, keil, LIC=47GU5-GE5WI-JJF6S-L5PAY-BRK7N-23XAJ
|
||||
|
||||
Tool Versions:
|
||||
Toolchain: MDK-ARM Professional Version: 5.15.0
|
||||
Toolchain: MDK-ARM Plus Version: 5.22
|
||||
Toolchain Path: C:\Keil_v5\ARM\ARMCC\Bin
|
||||
C Compiler: Armcc.exe V5.05 update 2 (build 169)
|
||||
Assembler: Armasm.exe V5.05 update 2 (build 169)
|
||||
Linker/Locator: ArmLink.exe V5.05 update 2 (build 169)
|
||||
Library Manager: ArmAr.exe V5.05 update 2 (build 169)
|
||||
Hex Converter: FromElf.exe V5.05 update 2 (build 169)
|
||||
CPU DLL: SARMCM3.DLL V5.15.0
|
||||
Dialog DLL: DCM.DLL V1.13.2.0
|
||||
Target DLL: STLink\ST-LINKIII-KEIL_SWO.dll V2.0.15.0_KEIL
|
||||
Dialog DLL: TCM.DLL V1.14.5.0
|
||||
C Compiler: Armcc.exe V5.06 update 4 (build 422)
|
||||
Assembler: Armasm.exe V5.06 update 4 (build 422)
|
||||
Linker/Locator: ArmLink.exe V5.06 update 4 (build 422)
|
||||
Library Manager: ArmAr.exe V5.06 update 4 (build 422)
|
||||
Hex Converter: FromElf.exe V5.06 update 4 (build 422)
|
||||
CPU DLL: SARMCM3.DLL V5.22
|
||||
Dialog DLL: DCM.DLL V1.13.9.0
|
||||
Target DLL: STLink\ST-LINKIII-KEIL_SWO.dll V2.0.18.0
|
||||
Dialog DLL: TCM.DLL V1.21.0.0
|
||||
|
||||
<h2>Project:</h2>
|
||||
D:\fighterteam\project\gu\make\code\sensor_2026\sensor_2026\USER\USART.uvprojx
|
||||
Project File Date: 02/11/2026
|
||||
E:\CGY_2026\GIT\sensor_2026 - ¸±±¾\USER\USART.uvprojx
|
||||
Project File Date: 02/22/2026
|
||||
|
||||
<h2>Output:</h2>
|
||||
*** Using Compiler 'V5.05 update 2 (build 169)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
|
||||
*** Using Compiler 'V5.06 update 4 (build 422)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
|
||||
Build target 'USART'
|
||||
compiling main.c...
|
||||
linking...
|
||||
Program Size: Code=6820 RO-data=424 RW-data=120 ZI-data=1024
|
||||
FromELF: creating hex file...
|
||||
"..\OBJ\USART.axf" - 0 Error(s), 0 Warning(s).
|
||||
|
||||
<h2>Software Packages used:</h2>
|
||||
|
||||
Package Vendor: Keil
|
||||
http://www.keil.com/pack/Keil.STM32F4xx_DFP.2.14.0.pack
|
||||
Keil.STM32F4xx_DFP.2.14.0
|
||||
http://www.keil.com/pack/Keil.STM32F4xx_DFP.2.11.0.pack
|
||||
Keil.STM32F4xx_DFP.2.11.0
|
||||
STMicroelectronics STM32F4 Series Device Support, Drivers and Examples
|
||||
|
||||
<h2>Collection of Component include folders:</h2>
|
||||
.\RTE\_USART
|
||||
C:\Keil_v5\ARM\PACK\Keil\STM32F4xx_DFP\2.14.0\Drivers\CMSIS\Device\ST\STM32F4xx\Include
|
||||
C:/Keil_v5/ARM/PACK/Keil/STM32F4xx_DFP/2.11.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include
|
||||
|
||||
<h2>Collection of Component Files used:</h2>
|
||||
Build Time Elapsed: 00:00:00
|
||||
Build Time Elapsed: 00:00:01
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
676
OBJ/USART.htm
676
OBJ/USART.htm
|
|
@ -3,7 +3,7 @@
|
|||
<title>Static Call Graph - [..\OBJ\USART.axf]</title></head>
|
||||
<body><HR>
|
||||
<H1>Static Call Graph for image ..\OBJ\USART.axf</H1><HR>
|
||||
<BR><P>#<CALLGRAPH># ARM Linker, 5050169: Last Updated: Wed Feb 11 09:09:32 2026
|
||||
<BR><P>#<CALLGRAPH># ARM Linker, 5060422: Last Updated: Wed Feb 25 11:07:10 2026
|
||||
<BR><P>
|
||||
<H3>Maximum Stack Usage = 124 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
|
||||
Call chain for Maximum Stack Depth:</H3>
|
||||
|
|
@ -111,7 +111,6 @@ Function Pointers
|
|||
<LI><a href="#[5]">UsageFault_Handler</a> from stm32f4xx_it.o(i.UsageFault_Handler) referenced from startup_stm32f40_41xxx.o(RESET)
|
||||
<LI><a href="#[a]">WWDG_IRQHandler</a> from startup_stm32f40_41xxx.o(.text) referenced from startup_stm32f40_41xxx.o(RESET)
|
||||
<LI><a href="#[5e]">__main</a> from entry.o(.ARM.Collect$$$$00000000) referenced from startup_stm32f40_41xxx.o(.text)
|
||||
<LI><a href="#[5f]">fputc</a> from usart.o(i.fputc) referenced from printfb.o(i.__0printf$bare)
|
||||
<LI><a href="#[5c]">main</a> from main.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B)
|
||||
</UL>
|
||||
<P>
|
||||
|
|
@ -121,25 +120,25 @@ Global Symbols
|
|||
<P><STRONG><a name="[5e]"></a>__main</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f40_41xxx.o(.text)
|
||||
</UL>
|
||||
<P><STRONG><a name="[9c]"></a>_main_stk</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))
|
||||
<P><STRONG><a name="[93]"></a>_main_stk</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))
|
||||
|
||||
<P><STRONG><a name="[60]"></a>_main_scatterload</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
|
||||
<BR><BR>[Calls]<UL><LI><a href="#[61]">>></a> __scatterload
|
||||
<P><STRONG><a name="[5f]"></a>_main_scatterload</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
|
||||
<BR><BR>[Calls]<UL><LI><a href="#[60]">>></a> __scatterload
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[62]"></a>__main_after_scatterload</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[61]">>></a> __scatterload
|
||||
<P><STRONG><a name="[61]"></a>__main_after_scatterload</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[60]">>></a> __scatterload
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[9d]"></a>_main_clock</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008))
|
||||
<P><STRONG><a name="[94]"></a>_main_clock</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008))
|
||||
|
||||
<P><STRONG><a name="[9e]"></a>_main_cpp_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A))
|
||||
<P><STRONG><a name="[95]"></a>_main_cpp_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A))
|
||||
|
||||
<P><STRONG><a name="[9f]"></a>_main_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B))
|
||||
<P><STRONG><a name="[96]"></a>_main_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B))
|
||||
|
||||
<P><STRONG><a name="[a0]"></a>__rt_final_cpp</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D))
|
||||
<P><STRONG><a name="[97]"></a>__rt_final_cpp</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D))
|
||||
|
||||
<P><STRONG><a name="[a1]"></a>__rt_final_exit</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F))
|
||||
<P><STRONG><a name="[98]"></a>__rt_final_exit</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F))
|
||||
|
||||
<P><STRONG><a name="[0]"></a>Reset_Handler</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, startup_stm32f40_41xxx.o(.text))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f40_41xxx.o(RESET)
|
||||
|
|
@ -367,31 +366,31 @@ Global Symbols
|
|||
<P><STRONG><a name="[a]"></a>WWDG_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f40_41xxx.o(.text))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f40_41xxx.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[61]"></a>__scatterload</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text))
|
||||
<BR><BR>[Calls]<UL><LI><a href="#[62]">>></a> __main_after_scatterload
|
||||
<P><STRONG><a name="[60]"></a>__scatterload</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text))
|
||||
<BR><BR>[Calls]<UL><LI><a href="#[61]">>></a> __main_after_scatterload
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[60]">>></a> _main_scatterload
|
||||
<BR>[Called By]<UL><LI><a href="#[5f]">>></a> _main_scatterload
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[a2]"></a>__scatterload_rt2</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)
|
||||
<P><STRONG><a name="[99]"></a>__scatterload_rt2</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[4]"></a>BusFault_Handler</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f4xx_it.o(i.BusFault_Handler))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f40_41xxx.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[63]"></a>DRV8832_GPIO_Init</STRONG> (Thumb, 94 bytes, Stack size 16 bytes, motor_driver.o(i.DRV8832_GPIO_Init))
|
||||
<P><STRONG><a name="[62]"></a>DRV8832_GPIO_Init</STRONG> (Thumb, 346 bytes, Stack size 16 bytes, motor_driver.o(i.DRV8832_GPIO_Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = DRV8832_GPIO_Init ⇒ GPIO_Init
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[64]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[65]">>></a> GPIO_Init
|
||||
<LI><a href="#[66]">>></a> GPIO_ResetBits
|
||||
<BR>[Calls]<UL><LI><a href="#[63]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[64]">>></a> GPIO_Init
|
||||
<LI><a href="#[65]">>></a> GPIO_ResetBits
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[67]">>></a> DRV8832_Init
|
||||
<BR>[Called By]<UL><LI><a href="#[66]">>></a> DRV8832_Init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[67]"></a>DRV8832_Init</STRONG> (Thumb, 8 bytes, Stack size 8 bytes, motor_driver.o(i.DRV8832_Init))
|
||||
<P><STRONG><a name="[66]"></a>DRV8832_Init</STRONG> (Thumb, 8 bytes, Stack size 8 bytes, motor_driver.o(i.DRV8832_Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 44<LI>Call Chain = DRV8832_Init ⇒ DRV8832_GPIO_Init ⇒ GPIO_Init
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[63]">>></a> DRV8832_GPIO_Init
|
||||
<BR>[Calls]<UL><LI><a href="#[62]">>></a> DRV8832_GPIO_Init
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
|
@ -399,172 +398,181 @@ Global Symbols
|
|||
<P><STRONG><a name="[7]"></a>DebugMon_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_it.o(i.DebugMon_Handler))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f40_41xxx.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[65]"></a>GPIO_Init</STRONG> (Thumb, 144 bytes, Stack size 20 bytes, stm32f4xx_gpio.o(i.GPIO_Init))
|
||||
<P><STRONG><a name="[64]"></a>GPIO_Init</STRONG> (Thumb, 144 bytes, Stack size 20 bytes, stm32f4xx_gpio.o(i.GPIO_Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = GPIO_Init
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[93]">>></a> uart6_init
|
||||
<LI><a href="#[92]">>></a> uart5_init
|
||||
<LI><a href="#[91]">>></a> uart4_init
|
||||
<LI><a href="#[90]">>></a> uart3_init
|
||||
<LI><a href="#[8f]">>></a> uart2_init
|
||||
<LI><a href="#[8e]">>></a> uart1_init
|
||||
<LI><a href="#[95]">>></a> motor_spi2_init
|
||||
<LI><a href="#[94]">>></a> motor_spi1_init
|
||||
<LI><a href="#[8c]">>></a> gpio_Init
|
||||
<LI><a href="#[7c]">>></a> TIM4_PWM_Init
|
||||
<LI><a href="#[73]">>></a> TIM1_PWM_Init
|
||||
<LI><a href="#[63]">>></a> DRV8832_GPIO_Init
|
||||
<BR>[Called By]<UL><LI><a href="#[87]">>></a> uart6_init
|
||||
<LI><a href="#[86]">>></a> uart5_init
|
||||
<LI><a href="#[85]">>></a> uart4_init
|
||||
<LI><a href="#[84]">>></a> uart3_init
|
||||
<LI><a href="#[83]">>></a> uart2_init
|
||||
<LI><a href="#[82]">>></a> uart1_init
|
||||
<LI><a href="#[89]">>></a> motor_spi2_init
|
||||
<LI><a href="#[88]">>></a> motor_spi1_init
|
||||
<LI><a href="#[80]">>></a> gpio_Init
|
||||
<LI><a href="#[62]">>></a> DRV8832_GPIO_Init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[75]"></a>GPIO_PinAFConfig</STRONG> (Thumb, 70 bytes, Stack size 20 bytes, stm32f4xx_gpio.o(i.GPIO_PinAFConfig))
|
||||
<P><STRONG><a name="[8b]"></a>GPIO_PinAFConfig</STRONG> (Thumb, 70 bytes, Stack size 20 bytes, stm32f4xx_gpio.o(i.GPIO_PinAFConfig))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = GPIO_PinAFConfig
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[93]">>></a> uart6_init
|
||||
<LI><a href="#[92]">>></a> uart5_init
|
||||
<LI><a href="#[91]">>></a> uart4_init
|
||||
<LI><a href="#[90]">>></a> uart3_init
|
||||
<LI><a href="#[8f]">>></a> uart2_init
|
||||
<LI><a href="#[8e]">>></a> uart1_init
|
||||
<LI><a href="#[95]">>></a> motor_spi2_init
|
||||
<LI><a href="#[94]">>></a> motor_spi1_init
|
||||
<LI><a href="#[7c]">>></a> TIM4_PWM_Init
|
||||
<LI><a href="#[73]">>></a> TIM1_PWM_Init
|
||||
<BR>[Called By]<UL><LI><a href="#[87]">>></a> uart6_init
|
||||
<LI><a href="#[86]">>></a> uart5_init
|
||||
<LI><a href="#[85]">>></a> uart4_init
|
||||
<LI><a href="#[84]">>></a> uart3_init
|
||||
<LI><a href="#[83]">>></a> uart2_init
|
||||
<LI><a href="#[82]">>></a> uart1_init
|
||||
<LI><a href="#[89]">>></a> motor_spi2_init
|
||||
<LI><a href="#[88]">>></a> motor_spi1_init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[66]"></a>GPIO_ResetBits</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f4xx_gpio.o(i.GPIO_ResetBits))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[7c]">>></a> TIM4_PWM_Init
|
||||
<LI><a href="#[73]">>></a> TIM1_PWM_Init
|
||||
<P><STRONG><a name="[65]"></a>GPIO_ResetBits</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f4xx_gpio.o(i.GPIO_ResetBits))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[6a]">>></a> R_Motor_Control
|
||||
<LI><a href="#[69]">>></a> M_Motor_Control
|
||||
<LI><a href="#[67]">>></a> L_Motor_Control
|
||||
<LI><a href="#[26]">>></a> TIM2_IRQHandler
|
||||
<LI><a href="#[63]">>></a> DRV8832_GPIO_Init
|
||||
<LI><a href="#[62]">>></a> DRV8832_GPIO_Init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[7b]"></a>GPIO_SetBits</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f4xx_gpio.o(i.GPIO_SetBits))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[26]">>></a> TIM2_IRQHandler
|
||||
<P><STRONG><a name="[68]"></a>GPIO_SetBits</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f4xx_gpio.o(i.GPIO_SetBits))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[6a]">>></a> R_Motor_Control
|
||||
<LI><a href="#[69]">>></a> M_Motor_Control
|
||||
<LI><a href="#[67]">>></a> L_Motor_Control
|
||||
<LI><a href="#[26]">>></a> TIM2_IRQHandler
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[2]"></a>HardFault_Handler</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f4xx_it.o(i.HardFault_Handler))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f40_41xxx.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[67]"></a>L_Motor_Control</STRONG> (Thumb, 112 bytes, Stack size 8 bytes, motor_driver.o(i.L_Motor_Control))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = L_Motor_Control
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[68]">>></a> GPIO_SetBits
|
||||
<LI><a href="#[65]">>></a> GPIO_ResetBits
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[69]"></a>M_Motor_Control</STRONG> (Thumb, 104 bytes, Stack size 8 bytes, motor_driver.o(i.M_Motor_Control))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = M_Motor_Control
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[68]">>></a> GPIO_SetBits
|
||||
<LI><a href="#[65]">>></a> GPIO_ResetBits
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[3]"></a>MemManage_Handler</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f4xx_it.o(i.MemManage_Handler))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f40_41xxx.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[1]"></a>NMI_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_it.o(i.NMI_Handler))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f40_41xxx.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[6c]"></a>NVIC_Init</STRONG> (Thumb, 106 bytes, Stack size 16 bytes, misc.o(i.NVIC_Init))
|
||||
<P><STRONG><a name="[91]"></a>NVIC_Init</STRONG> (Thumb, 106 bytes, Stack size 16 bytes, misc.o(i.NVIC_Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = NVIC_Init
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[93]">>></a> uart6_init
|
||||
<LI><a href="#[92]">>></a> uart5_init
|
||||
<LI><a href="#[91]">>></a> uart4_init
|
||||
<LI><a href="#[90]">>></a> uart3_init
|
||||
<LI><a href="#[8f]">>></a> uart2_init
|
||||
<LI><a href="#[8e]">>></a> uart1_init
|
||||
<LI><a href="#[68]">>></a> PWM_Timer_Init
|
||||
<BR>[Called By]<UL><LI><a href="#[87]">>></a> uart6_init
|
||||
<LI><a href="#[86]">>></a> uart5_init
|
||||
<LI><a href="#[85]">>></a> uart4_init
|
||||
<LI><a href="#[84]">>></a> uart3_init
|
||||
<LI><a href="#[83]">>></a> uart2_init
|
||||
<LI><a href="#[82]">>></a> uart1_init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[8d]"></a>NVIC_PriorityGroupConfig</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, misc.o(i.NVIC_PriorityGroupConfig))
|
||||
<P><STRONG><a name="[81]"></a>NVIC_PriorityGroupConfig</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, misc.o(i.NVIC_PriorityGroupConfig))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[68]"></a>PWM_Timer_Init</STRONG> (Thumb, 98 bytes, Stack size 24 bytes, motor_driver.o(i.PWM_Timer_Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = PWM_Timer_Init ⇒ NVIC_Init
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[6d]">>></a> TIM_Cmd
|
||||
<LI><a href="#[6a]">>></a> TIM_TimeBaseInit
|
||||
<LI><a href="#[6b]">>></a> TIM_ITConfig
|
||||
<LI><a href="#[69]">>></a> RCC_APB1PeriphClockCmd
|
||||
<LI><a href="#[6c]">>></a> NVIC_Init
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[8]"></a>PendSV_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_it.o(i.PendSV_Handler))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f40_41xxx.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[64]"></a>RCC_AHB1PeriphClockCmd</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, stm32f4xx_rcc.o(i.RCC_AHB1PeriphClockCmd))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[93]">>></a> uart6_init
|
||||
<LI><a href="#[92]">>></a> uart5_init
|
||||
<LI><a href="#[91]">>></a> uart4_init
|
||||
<LI><a href="#[90]">>></a> uart3_init
|
||||
<LI><a href="#[8f]">>></a> uart2_init
|
||||
<LI><a href="#[8e]">>></a> uart1_init
|
||||
<LI><a href="#[95]">>></a> motor_spi2_init
|
||||
<LI><a href="#[94]">>></a> motor_spi1_init
|
||||
<LI><a href="#[8c]">>></a> gpio_Init
|
||||
<LI><a href="#[7c]">>></a> TIM4_PWM_Init
|
||||
<LI><a href="#[73]">>></a> TIM1_PWM_Init
|
||||
<LI><a href="#[63]">>></a> DRV8832_GPIO_Init
|
||||
<P><STRONG><a name="[63]"></a>RCC_AHB1PeriphClockCmd</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, stm32f4xx_rcc.o(i.RCC_AHB1PeriphClockCmd))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[87]">>></a> uart6_init
|
||||
<LI><a href="#[86]">>></a> uart5_init
|
||||
<LI><a href="#[85]">>></a> uart4_init
|
||||
<LI><a href="#[84]">>></a> uart3_init
|
||||
<LI><a href="#[83]">>></a> uart2_init
|
||||
<LI><a href="#[82]">>></a> uart1_init
|
||||
<LI><a href="#[89]">>></a> motor_spi2_init
|
||||
<LI><a href="#[88]">>></a> motor_spi1_init
|
||||
<LI><a href="#[80]">>></a> gpio_Init
|
||||
<LI><a href="#[62]">>></a> DRV8832_GPIO_Init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[69]"></a>RCC_APB1PeriphClockCmd</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, stm32f4xx_rcc.o(i.RCC_APB1PeriphClockCmd))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[92]">>></a> uart5_init
|
||||
<LI><a href="#[91]">>></a> uart4_init
|
||||
<LI><a href="#[90]">>></a> uart3_init
|
||||
<LI><a href="#[8f]">>></a> uart2_init
|
||||
<LI><a href="#[7c]">>></a> TIM4_PWM_Init
|
||||
<LI><a href="#[68]">>></a> PWM_Timer_Init
|
||||
<P><STRONG><a name="[92]"></a>RCC_APB1PeriphClockCmd</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, stm32f4xx_rcc.o(i.RCC_APB1PeriphClockCmd))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[86]">>></a> uart5_init
|
||||
<LI><a href="#[85]">>></a> uart4_init
|
||||
<LI><a href="#[84]">>></a> uart3_init
|
||||
<LI><a href="#[83]">>></a> uart2_init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[74]"></a>RCC_APB2PeriphClockCmd</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, stm32f4xx_rcc.o(i.RCC_APB2PeriphClockCmd))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[93]">>></a> uart6_init
|
||||
<LI><a href="#[8e]">>></a> uart1_init
|
||||
<LI><a href="#[95]">>></a> motor_spi2_init
|
||||
<LI><a href="#[94]">>></a> motor_spi1_init
|
||||
<LI><a href="#[73]">>></a> TIM1_PWM_Init
|
||||
<P><STRONG><a name="[8a]"></a>RCC_APB2PeriphClockCmd</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, stm32f4xx_rcc.o(i.RCC_APB2PeriphClockCmd))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[87]">>></a> uart6_init
|
||||
<LI><a href="#[82]">>></a> uart1_init
|
||||
<LI><a href="#[89]">>></a> motor_spi2_init
|
||||
<LI><a href="#[88]">>></a> motor_spi1_init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[97]"></a>RCC_APB2PeriphResetCmd</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, stm32f4xx_rcc.o(i.RCC_APB2PeriphResetCmd))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[95]">>></a> motor_spi2_init
|
||||
<LI><a href="#[94]">>></a> motor_spi1_init
|
||||
<P><STRONG><a name="[8c]"></a>RCC_APB2PeriphResetCmd</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, stm32f4xx_rcc.o(i.RCC_APB2PeriphResetCmd))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[89]">>></a> motor_spi2_init
|
||||
<LI><a href="#[88]">>></a> motor_spi1_init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[81]"></a>RCC_GetClocksFreq</STRONG> (Thumb, 214 bytes, Stack size 20 bytes, stm32f4xx_rcc.o(i.RCC_GetClocksFreq))
|
||||
<P><STRONG><a name="[76]"></a>RCC_GetClocksFreq</STRONG> (Thumb, 214 bytes, Stack size 20 bytes, stm32f4xx_rcc.o(i.RCC_GetClocksFreq))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = RCC_GetClocksFreq
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[80]">>></a> USART_Init
|
||||
<BR>[Called By]<UL><LI><a href="#[75]">>></a> USART_Init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[6e]"></a>SPI1_ReadWriteByte</STRONG> (Thumb, 50 bytes, Stack size 8 bytes, spi.o(i.SPI1_ReadWriteByte))
|
||||
<P><STRONG><a name="[6a]"></a>R_Motor_Control</STRONG> (Thumb, 112 bytes, Stack size 8 bytes, motor_driver.o(i.R_Motor_Control))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = R_Motor_Control
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[68]">>></a> GPIO_SetBits
|
||||
<LI><a href="#[65]">>></a> GPIO_ResetBits
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[6b]"></a>SPI1_ReadWriteByte</STRONG> (Thumb, 50 bytes, Stack size 8 bytes, spi.o(i.SPI1_ReadWriteByte))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = SPI1_ReadWriteByte
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[70]">>></a> SPI_I2S_SendData
|
||||
<LI><a href="#[71]">>></a> SPI_I2S_ReceiveData
|
||||
<LI><a href="#[6f]">>></a> SPI_I2S_GetFlagStatus
|
||||
<BR>[Calls]<UL><LI><a href="#[6d]">>></a> SPI_I2S_SendData
|
||||
<LI><a href="#[6e]">>></a> SPI_I2S_ReceiveData
|
||||
<LI><a href="#[6c]">>></a> SPI_I2S_GetFlagStatus
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[95]">>></a> motor_spi2_init
|
||||
<LI><a href="#[94]">>></a> motor_spi1_init
|
||||
<BR>[Called By]<UL><LI><a href="#[89]">>></a> motor_spi2_init
|
||||
<LI><a href="#[88]">>></a> motor_spi1_init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[99]"></a>SPI_Cmd</STRONG> (Thumb, 24 bytes, Stack size 0 bytes, stm32f4xx_spi.o(i.SPI_Cmd))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[95]">>></a> motor_spi2_init
|
||||
<LI><a href="#[94]">>></a> motor_spi1_init
|
||||
<P><STRONG><a name="[8e]"></a>SPI_Cmd</STRONG> (Thumb, 24 bytes, Stack size 0 bytes, stm32f4xx_spi.o(i.SPI_Cmd))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[89]">>></a> motor_spi2_init
|
||||
<LI><a href="#[88]">>></a> motor_spi1_init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[6f]"></a>SPI_I2S_GetFlagStatus</STRONG> (Thumb, 18 bytes, Stack size 0 bytes, stm32f4xx_spi.o(i.SPI_I2S_GetFlagStatus))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[6e]">>></a> SPI1_ReadWriteByte
|
||||
<P><STRONG><a name="[6c]"></a>SPI_I2S_GetFlagStatus</STRONG> (Thumb, 18 bytes, Stack size 0 bytes, stm32f4xx_spi.o(i.SPI_I2S_GetFlagStatus))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[6b]">>></a> SPI1_ReadWriteByte
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[71]"></a>SPI_I2S_ReceiveData</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f4xx_spi.o(i.SPI_I2S_ReceiveData))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[6e]">>></a> SPI1_ReadWriteByte
|
||||
<P><STRONG><a name="[6e]"></a>SPI_I2S_ReceiveData</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f4xx_spi.o(i.SPI_I2S_ReceiveData))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[6b]">>></a> SPI1_ReadWriteByte
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[70]"></a>SPI_I2S_SendData</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f4xx_spi.o(i.SPI_I2S_SendData))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[6e]">>></a> SPI1_ReadWriteByte
|
||||
<P><STRONG><a name="[6d]"></a>SPI_I2S_SendData</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f4xx_spi.o(i.SPI_I2S_SendData))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[6b]">>></a> SPI1_ReadWriteByte
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[98]"></a>SPI_Init</STRONG> (Thumb, 60 bytes, Stack size 8 bytes, stm32f4xx_spi.o(i.SPI_Init))
|
||||
<P><STRONG><a name="[8d]"></a>SPI_Init</STRONG> (Thumb, 60 bytes, Stack size 8 bytes, stm32f4xx_spi.o(i.SPI_Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = SPI_Init
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[95]">>></a> motor_spi2_init
|
||||
<LI><a href="#[94]">>></a> motor_spi1_init
|
||||
<BR>[Called By]<UL><LI><a href="#[89]">>></a> motor_spi2_init
|
||||
<LI><a href="#[88]">>></a> motor_spi1_init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[6]"></a>SVC_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_it.o(i.SVC_Handler))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f40_41xxx.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[89]"></a>SysTick_CLKSourceConfig</STRONG> (Thumb, 40 bytes, Stack size 0 bytes, misc.o(i.SysTick_CLKSourceConfig))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[88]">>></a> delay_init
|
||||
<P><STRONG><a name="[7d]"></a>SysTick_CLKSourceConfig</STRONG> (Thumb, 40 bytes, Stack size 0 bytes, misc.o(i.SysTick_CLKSourceConfig))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[7c]">>></a> delay_init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[9]"></a>SysTick_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f4xx_it.o(i.SysTick_Handler))
|
||||
|
|
@ -573,33 +581,17 @@ Global Symbols
|
|||
<P><STRONG><a name="[5d]"></a>SystemInit</STRONG> (Thumb, 88 bytes, Stack size 8 bytes, system_stm32f4xx.o(i.SystemInit))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = SystemInit ⇒ SetSysClock
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[72]">>></a> SetSysClock
|
||||
<BR>[Calls]<UL><LI><a href="#[6f]">>></a> SetSysClock
|
||||
</UL>
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f40_41xxx.o(.text)
|
||||
</UL>
|
||||
<P><STRONG><a name="[73]"></a>TIM1_PWM_Init</STRONG> (Thumb, 156 bytes, Stack size 56 bytes, timer.o(i.TIM1_PWM_Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 76<LI>Call Chain = TIM1_PWM_Init ⇒ GPIO_Init
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[74]">>></a> RCC_APB2PeriphClockCmd
|
||||
<LI><a href="#[64]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[65]">>></a> GPIO_Init
|
||||
<LI><a href="#[66]">>></a> GPIO_ResetBits
|
||||
<LI><a href="#[6a]">>></a> TIM_TimeBaseInit
|
||||
<LI><a href="#[77]">>></a> TIM_OC1PreloadConfig
|
||||
<LI><a href="#[76]">>></a> TIM_OC1Init
|
||||
<LI><a href="#[78]">>></a> TIM_ARRPreloadConfig
|
||||
<LI><a href="#[75]">>></a> GPIO_PinAFConfig
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[26]"></a>TIM2_IRQHandler</STRONG> (Thumb, 194 bytes, Stack size 8 bytes, motor_driver.o(i.TIM2_IRQHandler))
|
||||
<P><STRONG><a name="[26]"></a>TIM2_IRQHandler</STRONG> (Thumb, 526 bytes, Stack size 8 bytes, motor_driver.o(i.TIM2_IRQHandler))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = TIM2_IRQHandler ⇒ TIM_GetITStatus
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[7b]">>></a> GPIO_SetBits
|
||||
<LI><a href="#[66]">>></a> GPIO_ResetBits
|
||||
<LI><a href="#[79]">>></a> TIM_GetITStatus
|
||||
<LI><a href="#[7a]">>></a> TIM_ClearITPendingBit
|
||||
<BR>[Calls]<UL><LI><a href="#[68]">>></a> GPIO_SetBits
|
||||
<LI><a href="#[65]">>></a> GPIO_ResetBits
|
||||
<LI><a href="#[70]">>></a> TIM_GetITStatus
|
||||
<LI><a href="#[71]">>></a> TIM_ClearITPendingBit
|
||||
</UL>
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f40_41xxx.o(RESET)
|
||||
</UL>
|
||||
|
|
@ -609,64 +601,16 @@ Global Symbols
|
|||
<P><STRONG><a name="[28]"></a>TIM4_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, timer.o(i.TIM4_IRQHandler))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f40_41xxx.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[7c]"></a>TIM4_PWM_Init</STRONG> (Thumb, 156 bytes, Stack size 56 bytes, timer.o(i.TIM4_PWM_Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 76<LI>Call Chain = TIM4_PWM_Init ⇒ GPIO_Init
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[64]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[65]">>></a> GPIO_Init
|
||||
<LI><a href="#[66]">>></a> GPIO_ResetBits
|
||||
<LI><a href="#[6a]">>></a> TIM_TimeBaseInit
|
||||
<LI><a href="#[77]">>></a> TIM_OC1PreloadConfig
|
||||
<LI><a href="#[76]">>></a> TIM_OC1Init
|
||||
<LI><a href="#[78]">>></a> TIM_ARRPreloadConfig
|
||||
<LI><a href="#[69]">>></a> RCC_APB1PeriphClockCmd
|
||||
<LI><a href="#[75]">>></a> GPIO_PinAFConfig
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[78]"></a>TIM_ARRPreloadConfig</STRONG> (Thumb, 24 bytes, Stack size 0 bytes, stm32f4xx_tim.o(i.TIM_ARRPreloadConfig))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[7c]">>></a> TIM4_PWM_Init
|
||||
<LI><a href="#[73]">>></a> TIM1_PWM_Init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[7a]"></a>TIM_ClearITPendingBit</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f4xx_tim.o(i.TIM_ClearITPendingBit))
|
||||
<P><STRONG><a name="[71]"></a>TIM_ClearITPendingBit</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f4xx_tim.o(i.TIM_ClearITPendingBit))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[26]">>></a> TIM2_IRQHandler
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[6d]"></a>TIM_Cmd</STRONG> (Thumb, 24 bytes, Stack size 0 bytes, stm32f4xx_tim.o(i.TIM_Cmd))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[68]">>></a> PWM_Timer_Init
|
||||
<LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[79]"></a>TIM_GetITStatus</STRONG> (Thumb, 34 bytes, Stack size 12 bytes, stm32f4xx_tim.o(i.TIM_GetITStatus))
|
||||
<P><STRONG><a name="[70]"></a>TIM_GetITStatus</STRONG> (Thumb, 34 bytes, Stack size 12 bytes, stm32f4xx_tim.o(i.TIM_GetITStatus))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = TIM_GetITStatus
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[26]">>></a> TIM2_IRQHandler
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[6b]"></a>TIM_ITConfig</STRONG> (Thumb, 18 bytes, Stack size 0 bytes, stm32f4xx_tim.o(i.TIM_ITConfig))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[68]">>></a> PWM_Timer_Init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[76]"></a>TIM_OC1Init</STRONG> (Thumb, 114 bytes, Stack size 16 bytes, stm32f4xx_tim.o(i.TIM_OC1Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = TIM_OC1Init
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[7c]">>></a> TIM4_PWM_Init
|
||||
<LI><a href="#[73]">>></a> TIM1_PWM_Init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[77]"></a>TIM_OC1PreloadConfig</STRONG> (Thumb, 18 bytes, Stack size 0 bytes, stm32f4xx_tim.o(i.TIM_OC1PreloadConfig))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[7c]">>></a> TIM4_PWM_Init
|
||||
<LI><a href="#[73]">>></a> TIM1_PWM_Init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[6a]"></a>TIM_TimeBaseInit</STRONG> (Thumb, 104 bytes, Stack size 0 bytes, stm32f4xx_tim.o(i.TIM_TimeBaseInit))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[7c]">>></a> TIM4_PWM_Init
|
||||
<LI><a href="#[73]">>></a> TIM1_PWM_Init
|
||||
<LI><a href="#[68]">>></a> PWM_Timer_Init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[3e]"></a>UART4_IRQHandler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, usart.o(i.UART4_IRQHandler))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f40_41xxx.o(RESET)
|
||||
</UL>
|
||||
|
|
@ -676,40 +620,40 @@ Global Symbols
|
|||
<P><STRONG><a name="[2f]"></a>USART1_IRQHandler</STRONG> (Thumb, 144 bytes, Stack size 8 bytes, usart.o(i.USART1_IRQHandler))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = USART1_IRQHandler ⇒ USART_GetITStatus
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[7f]">>></a> USART_ReceiveData
|
||||
<LI><a href="#[7d]">>></a> USART_GetITStatus
|
||||
<LI><a href="#[7e]">>></a> USART_ClearITPendingBit
|
||||
<BR>[Calls]<UL><LI><a href="#[74]">>></a> USART_ReceiveData
|
||||
<LI><a href="#[72]">>></a> USART_GetITStatus
|
||||
<LI><a href="#[73]">>></a> USART_ClearITPendingBit
|
||||
</UL>
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f40_41xxx.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[30]"></a>USART2_IRQHandler</STRONG> (Thumb, 144 bytes, Stack size 8 bytes, usart.o(i.USART2_IRQHandler))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = USART2_IRQHandler ⇒ USART_GetITStatus
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[7f]">>></a> USART_ReceiveData
|
||||
<LI><a href="#[7d]">>></a> USART_GetITStatus
|
||||
<LI><a href="#[7e]">>></a> USART_ClearITPendingBit
|
||||
<BR>[Calls]<UL><LI><a href="#[74]">>></a> USART_ReceiveData
|
||||
<LI><a href="#[72]">>></a> USART_GetITStatus
|
||||
<LI><a href="#[73]">>></a> USART_ClearITPendingBit
|
||||
</UL>
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f40_41xxx.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[31]"></a>USART3_IRQHandler</STRONG> (Thumb, 144 bytes, Stack size 8 bytes, usart.o(i.USART3_IRQHandler))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = USART3_IRQHandler ⇒ USART_GetITStatus
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[7f]">>></a> USART_ReceiveData
|
||||
<LI><a href="#[7d]">>></a> USART_GetITStatus
|
||||
<LI><a href="#[7e]">>></a> USART_ClearITPendingBit
|
||||
<BR>[Calls]<UL><LI><a href="#[74]">>></a> USART_ReceiveData
|
||||
<LI><a href="#[72]">>></a> USART_GetITStatus
|
||||
<LI><a href="#[73]">>></a> USART_ClearITPendingBit
|
||||
</UL>
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f40_41xxx.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[51]"></a>USART6_IRQHandler</STRONG> (Thumb, 144 bytes, Stack size 8 bytes, usart.o(i.USART6_IRQHandler))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = USART6_IRQHandler ⇒ USART_GetITStatus
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[7f]">>></a> USART_ReceiveData
|
||||
<LI><a href="#[7d]">>></a> USART_GetITStatus
|
||||
<LI><a href="#[7e]">>></a> USART_ClearITPendingBit
|
||||
<BR>[Calls]<UL><LI><a href="#[74]">>></a> USART_ReceiveData
|
||||
<LI><a href="#[72]">>></a> USART_GetITStatus
|
||||
<LI><a href="#[73]">>></a> USART_ClearITPendingBit
|
||||
</UL>
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f40_41xxx.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[7e]"></a>USART_ClearITPendingBit</STRONG> (Thumb, 30 bytes, Stack size 8 bytes, stm32f4xx_usart.o(i.USART_ClearITPendingBit))
|
||||
<P><STRONG><a name="[73]"></a>USART_ClearITPendingBit</STRONG> (Thumb, 30 bytes, Stack size 8 bytes, stm32f4xx_usart.o(i.USART_ClearITPendingBit))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = USART_ClearITPendingBit
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[51]">>></a> USART6_IRQHandler
|
||||
|
|
@ -718,21 +662,20 @@ Global Symbols
|
|||
<LI><a href="#[2f]">>></a> USART1_IRQHandler
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[9a]"></a>USART_Cmd</STRONG> (Thumb, 24 bytes, Stack size 0 bytes, stm32f4xx_usart.o(i.USART_Cmd))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[93]">>></a> uart6_init
|
||||
<LI><a href="#[92]">>></a> uart5_init
|
||||
<LI><a href="#[91]">>></a> uart4_init
|
||||
<LI><a href="#[90]">>></a> uart3_init
|
||||
<LI><a href="#[8f]">>></a> uart2_init
|
||||
<LI><a href="#[8e]">>></a> uart1_init
|
||||
<P><STRONG><a name="[8f]"></a>USART_Cmd</STRONG> (Thumb, 24 bytes, Stack size 0 bytes, stm32f4xx_usart.o(i.USART_Cmd))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[87]">>></a> uart6_init
|
||||
<LI><a href="#[86]">>></a> uart5_init
|
||||
<LI><a href="#[85]">>></a> uart4_init
|
||||
<LI><a href="#[84]">>></a> uart3_init
|
||||
<LI><a href="#[83]">>></a> uart2_init
|
||||
<LI><a href="#[82]">>></a> uart1_init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[84]"></a>USART_GetFlagStatus</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, stm32f4xx_usart.o(i.USART_GetFlagStatus))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[85]">>></a> Uart6_Send_data
|
||||
<LI><a href="#[82]">>></a> Uart5_Send_data
|
||||
<P><STRONG><a name="[79]"></a>USART_GetFlagStatus</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, stm32f4xx_usart.o(i.USART_GetFlagStatus))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[77]">>></a> Uart6_Send_data
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[7d]"></a>USART_GetITStatus</STRONG> (Thumb, 84 bytes, Stack size 16 bytes, stm32f4xx_usart.o(i.USART_GetITStatus))
|
||||
<P><STRONG><a name="[72]"></a>USART_GetITStatus</STRONG> (Thumb, 84 bytes, Stack size 16 bytes, stm32f4xx_usart.o(i.USART_GetITStatus))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = USART_GetITStatus
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[51]">>></a> USART6_IRQHandler
|
||||
|
|
@ -741,56 +684,46 @@ Global Symbols
|
|||
<LI><a href="#[2f]">>></a> USART1_IRQHandler
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[9b]"></a>USART_ITConfig</STRONG> (Thumb, 74 bytes, Stack size 20 bytes, stm32f4xx_usart.o(i.USART_ITConfig))
|
||||
<P><STRONG><a name="[90]"></a>USART_ITConfig</STRONG> (Thumb, 74 bytes, Stack size 20 bytes, stm32f4xx_usart.o(i.USART_ITConfig))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = USART_ITConfig
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[93]">>></a> uart6_init
|
||||
<LI><a href="#[92]">>></a> uart5_init
|
||||
<LI><a href="#[91]">>></a> uart4_init
|
||||
<LI><a href="#[90]">>></a> uart3_init
|
||||
<LI><a href="#[8f]">>></a> uart2_init
|
||||
<LI><a href="#[8e]">>></a> uart1_init
|
||||
<BR>[Called By]<UL><LI><a href="#[87]">>></a> uart6_init
|
||||
<LI><a href="#[86]">>></a> uart5_init
|
||||
<LI><a href="#[85]">>></a> uart4_init
|
||||
<LI><a href="#[84]">>></a> uart3_init
|
||||
<LI><a href="#[83]">>></a> uart2_init
|
||||
<LI><a href="#[82]">>></a> uart1_init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[80]"></a>USART_Init</STRONG> (Thumb, 204 bytes, Stack size 48 bytes, stm32f4xx_usart.o(i.USART_Init))
|
||||
<P><STRONG><a name="[75]"></a>USART_Init</STRONG> (Thumb, 204 bytes, Stack size 48 bytes, stm32f4xx_usart.o(i.USART_Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 68<LI>Call Chain = USART_Init ⇒ RCC_GetClocksFreq
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[81]">>></a> RCC_GetClocksFreq
|
||||
<BR>[Calls]<UL><LI><a href="#[76]">>></a> RCC_GetClocksFreq
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[93]">>></a> uart6_init
|
||||
<LI><a href="#[92]">>></a> uart5_init
|
||||
<LI><a href="#[91]">>></a> uart4_init
|
||||
<LI><a href="#[90]">>></a> uart3_init
|
||||
<LI><a href="#[8f]">>></a> uart2_init
|
||||
<LI><a href="#[8e]">>></a> uart1_init
|
||||
<BR>[Called By]<UL><LI><a href="#[87]">>></a> uart6_init
|
||||
<LI><a href="#[86]">>></a> uart5_init
|
||||
<LI><a href="#[85]">>></a> uart4_init
|
||||
<LI><a href="#[84]">>></a> uart3_init
|
||||
<LI><a href="#[83]">>></a> uart2_init
|
||||
<LI><a href="#[82]">>></a> uart1_init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[7f]"></a>USART_ReceiveData</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, stm32f4xx_usart.o(i.USART_ReceiveData))
|
||||
<P><STRONG><a name="[74]"></a>USART_ReceiveData</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, stm32f4xx_usart.o(i.USART_ReceiveData))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[51]">>></a> USART6_IRQHandler
|
||||
<LI><a href="#[31]">>></a> USART3_IRQHandler
|
||||
<LI><a href="#[30]">>></a> USART2_IRQHandler
|
||||
<LI><a href="#[2f]">>></a> USART1_IRQHandler
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[83]"></a>USART_SendData</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, stm32f4xx_usart.o(i.USART_SendData))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[85]">>></a> Uart6_Send_data
|
||||
<LI><a href="#[82]">>></a> Uart5_Send_data
|
||||
<P><STRONG><a name="[78]"></a>USART_SendData</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, stm32f4xx_usart.o(i.USART_SendData))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[77]">>></a> Uart6_Send_data
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[82]"></a>Uart5_Send_data</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, usart.o(i.Uart5_Send_data))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = Uart5_Send_data
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[83]">>></a> USART_SendData
|
||||
<LI><a href="#[84]">>></a> USART_GetFlagStatus
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[85]"></a>Uart6_Send_data</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, usart.o(i.Uart6_Send_data))
|
||||
<P><STRONG><a name="[77]"></a>Uart6_Send_data</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, usart.o(i.Uart6_Send_data))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = Uart6_Send_data
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[83]">>></a> USART_SendData
|
||||
<LI><a href="#[84]">>></a> USART_GetFlagStatus
|
||||
<BR>[Calls]<UL><LI><a href="#[78]">>></a> USART_SendData
|
||||
<LI><a href="#[79]">>></a> USART_GetFlagStatus
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
|
@ -798,196 +731,195 @@ Global Symbols
|
|||
<P><STRONG><a name="[5]"></a>UsageFault_Handler</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f4xx_it.o(i.UsageFault_Handler))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f40_41xxx.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[86]"></a>__0printf$bare</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, printfb.o(i.__0printf$bare), UNUSED)
|
||||
<BR><BR>[Calls]<UL><LI><a href="#[87]">>></a> _printf_core
|
||||
<P><STRONG><a name="[9a]"></a>__scatterload_copy</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[9b]"></a>__scatterload_null</STRONG> (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[9c]"></a>__scatterload_zeroinit</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[7b]"></a>crc8_calculate</STRONG> (Thumb, 122 bytes, Stack size 24 bytes, main.o(i.crc8_calculate))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = crc8_calculate
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[7a]">>></a> crc8_standard
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[a3]"></a>__1printf$bare</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, printfb.o(i.__0printf$bare), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[96]"></a>__2printf</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, printfb.o(i.__0printf$bare))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
<P><STRONG><a name="[7a]"></a>crc8_standard</STRONG> (Thumb, 24 bytes, Stack size 16 bytes, main.o(i.crc8_standard))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = crc8_standard ⇒ crc8_calculate
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[7b]">>></a> crc8_calculate
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[a4]"></a>__scatterload_copy</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[a5]"></a>__scatterload_null</STRONG> (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[a6]"></a>__scatterload_zeroinit</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[88]"></a>delay_init</STRONG> (Thumb, 52 bytes, Stack size 8 bytes, delay.o(i.delay_init))
|
||||
<P><STRONG><a name="[7c]"></a>delay_init</STRONG> (Thumb, 52 bytes, Stack size 8 bytes, delay.o(i.delay_init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = delay_init
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[89]">>></a> SysTick_CLKSourceConfig
|
||||
<BR>[Calls]<UL><LI><a href="#[7d]">>></a> SysTick_CLKSourceConfig
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[8a]"></a>delay_ms</STRONG> (Thumb, 56 bytes, Stack size 16 bytes, delay.o(i.delay_ms))
|
||||
<P><STRONG><a name="[7e]"></a>delay_ms</STRONG> (Thumb, 56 bytes, Stack size 16 bytes, delay.o(i.delay_ms))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = delay_ms
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[8b]">>></a> delay_xms
|
||||
<BR>[Calls]<UL><LI><a href="#[7f]">>></a> delay_xms
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[8b]"></a>delay_xms</STRONG> (Thumb, 72 bytes, Stack size 0 bytes, delay.o(i.delay_xms))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[8a]">>></a> delay_ms
|
||||
<P><STRONG><a name="[7f]"></a>delay_xms</STRONG> (Thumb, 72 bytes, Stack size 0 bytes, delay.o(i.delay_xms))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[7e]">>></a> delay_ms
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[5f]"></a>fputc</STRONG> (Thumb, 24 bytes, Stack size 0 bytes, usart.o(i.fputc))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> printfb.o(i.__0printf$bare)
|
||||
</UL>
|
||||
<P><STRONG><a name="[8c]"></a>gpio_Init</STRONG> (Thumb, 200 bytes, Stack size 16 bytes, led.o(i.gpio_Init))
|
||||
<P><STRONG><a name="[80]"></a>gpio_Init</STRONG> (Thumb, 200 bytes, Stack size 16 bytes, led.o(i.gpio_Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = gpio_Init ⇒ GPIO_Init
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[64]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[65]">>></a> GPIO_Init
|
||||
<BR>[Calls]<UL><LI><a href="#[63]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[64]">>></a> GPIO_Init
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[5c]"></a>main</STRONG> (Thumb, 316 bytes, Stack size 16 bytes, main.o(i.main))
|
||||
<P><STRONG><a name="[5c]"></a>main</STRONG> (Thumb, 742 bytes, Stack size 16 bytes, main.o(i.main))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 124<LI>Call Chain = main ⇒ uart6_init ⇒ USART_Init ⇒ RCC_GetClocksFreq
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[93]">>></a> uart6_init
|
||||
<LI><a href="#[92]">>></a> uart5_init
|
||||
<LI><a href="#[91]">>></a> uart4_init
|
||||
<LI><a href="#[90]">>></a> uart3_init
|
||||
<LI><a href="#[8f]">>></a> uart2_init
|
||||
<LI><a href="#[8e]">>></a> uart1_init
|
||||
<LI><a href="#[95]">>></a> motor_spi2_init
|
||||
<LI><a href="#[94]">>></a> motor_spi1_init
|
||||
<LI><a href="#[8c]">>></a> gpio_Init
|
||||
<LI><a href="#[8a]">>></a> delay_ms
|
||||
<LI><a href="#[88]">>></a> delay_init
|
||||
<LI><a href="#[85]">>></a> Uart6_Send_data
|
||||
<LI><a href="#[82]">>></a> Uart5_Send_data
|
||||
<LI><a href="#[6d]">>></a> TIM_Cmd
|
||||
<LI><a href="#[7c]">>></a> TIM4_PWM_Init
|
||||
<LI><a href="#[73]">>></a> TIM1_PWM_Init
|
||||
<LI><a href="#[68]">>></a> PWM_Timer_Init
|
||||
<LI><a href="#[8d]">>></a> NVIC_PriorityGroupConfig
|
||||
<LI><a href="#[67]">>></a> DRV8832_Init
|
||||
<LI><a href="#[96]">>></a> __2printf
|
||||
<BR>[Calls]<UL><LI><a href="#[87]">>></a> uart6_init
|
||||
<LI><a href="#[86]">>></a> uart5_init
|
||||
<LI><a href="#[85]">>></a> uart4_init
|
||||
<LI><a href="#[84]">>></a> uart3_init
|
||||
<LI><a href="#[83]">>></a> uart2_init
|
||||
<LI><a href="#[82]">>></a> uart1_init
|
||||
<LI><a href="#[89]">>></a> motor_spi2_init
|
||||
<LI><a href="#[88]">>></a> motor_spi1_init
|
||||
<LI><a href="#[80]">>></a> gpio_Init
|
||||
<LI><a href="#[7e]">>></a> delay_ms
|
||||
<LI><a href="#[7c]">>></a> delay_init
|
||||
<LI><a href="#[77]">>></a> Uart6_Send_data
|
||||
<LI><a href="#[6a]">>></a> R_Motor_Control
|
||||
<LI><a href="#[81]">>></a> NVIC_PriorityGroupConfig
|
||||
<LI><a href="#[69]">>></a> M_Motor_Control
|
||||
<LI><a href="#[67]">>></a> L_Motor_Control
|
||||
<LI><a href="#[66]">>></a> DRV8832_Init
|
||||
<LI><a href="#[7a]">>></a> crc8_standard
|
||||
</UL>
|
||||
<BR>[Address Reference Count : 1]<UL><LI> entry9a.o(.ARM.Collect$$$$0000000B)
|
||||
</UL>
|
||||
<P><STRONG><a name="[94]"></a>motor_spi1_init</STRONG> (Thumb, 186 bytes, Stack size 32 bytes, spi.o(i.motor_spi1_init))
|
||||
<P><STRONG><a name="[88]"></a>motor_spi1_init</STRONG> (Thumb, 186 bytes, Stack size 32 bytes, spi.o(i.motor_spi1_init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 52<LI>Call Chain = motor_spi1_init ⇒ GPIO_Init
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[97]">>></a> RCC_APB2PeriphResetCmd
|
||||
<LI><a href="#[74]">>></a> RCC_APB2PeriphClockCmd
|
||||
<LI><a href="#[64]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[65]">>></a> GPIO_Init
|
||||
<LI><a href="#[98]">>></a> SPI_Init
|
||||
<LI><a href="#[99]">>></a> SPI_Cmd
|
||||
<LI><a href="#[6e]">>></a> SPI1_ReadWriteByte
|
||||
<LI><a href="#[75]">>></a> GPIO_PinAFConfig
|
||||
<BR>[Calls]<UL><LI><a href="#[8c]">>></a> RCC_APB2PeriphResetCmd
|
||||
<LI><a href="#[8a]">>></a> RCC_APB2PeriphClockCmd
|
||||
<LI><a href="#[63]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[64]">>></a> GPIO_Init
|
||||
<LI><a href="#[8d]">>></a> SPI_Init
|
||||
<LI><a href="#[8e]">>></a> SPI_Cmd
|
||||
<LI><a href="#[6b]">>></a> SPI1_ReadWriteByte
|
||||
<LI><a href="#[8b]">>></a> GPIO_PinAFConfig
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[95]"></a>motor_spi2_init</STRONG> (Thumb, 232 bytes, Stack size 32 bytes, spi.o(i.motor_spi2_init))
|
||||
<P><STRONG><a name="[89]"></a>motor_spi2_init</STRONG> (Thumb, 232 bytes, Stack size 32 bytes, spi.o(i.motor_spi2_init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 52<LI>Call Chain = motor_spi2_init ⇒ GPIO_Init
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[97]">>></a> RCC_APB2PeriphResetCmd
|
||||
<LI><a href="#[74]">>></a> RCC_APB2PeriphClockCmd
|
||||
<LI><a href="#[64]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[65]">>></a> GPIO_Init
|
||||
<LI><a href="#[98]">>></a> SPI_Init
|
||||
<LI><a href="#[99]">>></a> SPI_Cmd
|
||||
<LI><a href="#[6e]">>></a> SPI1_ReadWriteByte
|
||||
<LI><a href="#[75]">>></a> GPIO_PinAFConfig
|
||||
<BR>[Calls]<UL><LI><a href="#[8c]">>></a> RCC_APB2PeriphResetCmd
|
||||
<LI><a href="#[8a]">>></a> RCC_APB2PeriphClockCmd
|
||||
<LI><a href="#[63]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[64]">>></a> GPIO_Init
|
||||
<LI><a href="#[8d]">>></a> SPI_Init
|
||||
<LI><a href="#[8e]">>></a> SPI_Cmd
|
||||
<LI><a href="#[6b]">>></a> SPI1_ReadWriteByte
|
||||
<LI><a href="#[8b]">>></a> GPIO_PinAFConfig
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[8e]"></a>uart1_init</STRONG> (Thumb, 164 bytes, Stack size 40 bytes, usart.o(i.uart1_init))
|
||||
<P><STRONG><a name="[82]"></a>uart1_init</STRONG> (Thumb, 164 bytes, Stack size 40 bytes, usart.o(i.uart1_init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 108<LI>Call Chain = uart1_init ⇒ USART_Init ⇒ RCC_GetClocksFreq
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[74]">>></a> RCC_APB2PeriphClockCmd
|
||||
<LI><a href="#[64]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[65]">>></a> GPIO_Init
|
||||
<LI><a href="#[80]">>></a> USART_Init
|
||||
<LI><a href="#[9b]">>></a> USART_ITConfig
|
||||
<LI><a href="#[9a]">>></a> USART_Cmd
|
||||
<LI><a href="#[6c]">>></a> NVIC_Init
|
||||
<LI><a href="#[75]">>></a> GPIO_PinAFConfig
|
||||
<BR>[Calls]<UL><LI><a href="#[8a]">>></a> RCC_APB2PeriphClockCmd
|
||||
<LI><a href="#[63]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[64]">>></a> GPIO_Init
|
||||
<LI><a href="#[75]">>></a> USART_Init
|
||||
<LI><a href="#[90]">>></a> USART_ITConfig
|
||||
<LI><a href="#[8f]">>></a> USART_Cmd
|
||||
<LI><a href="#[91]">>></a> NVIC_Init
|
||||
<LI><a href="#[8b]">>></a> GPIO_PinAFConfig
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[8f]"></a>uart2_init</STRONG> (Thumb, 162 bytes, Stack size 40 bytes, usart.o(i.uart2_init))
|
||||
<P><STRONG><a name="[83]"></a>uart2_init</STRONG> (Thumb, 162 bytes, Stack size 40 bytes, usart.o(i.uart2_init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 108<LI>Call Chain = uart2_init ⇒ USART_Init ⇒ RCC_GetClocksFreq
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[64]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[65]">>></a> GPIO_Init
|
||||
<LI><a href="#[80]">>></a> USART_Init
|
||||
<LI><a href="#[9b]">>></a> USART_ITConfig
|
||||
<LI><a href="#[9a]">>></a> USART_Cmd
|
||||
<LI><a href="#[69]">>></a> RCC_APB1PeriphClockCmd
|
||||
<LI><a href="#[6c]">>></a> NVIC_Init
|
||||
<LI><a href="#[75]">>></a> GPIO_PinAFConfig
|
||||
<BR>[Calls]<UL><LI><a href="#[63]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[64]">>></a> GPIO_Init
|
||||
<LI><a href="#[75]">>></a> USART_Init
|
||||
<LI><a href="#[90]">>></a> USART_ITConfig
|
||||
<LI><a href="#[8f]">>></a> USART_Cmd
|
||||
<LI><a href="#[92]">>></a> RCC_APB1PeriphClockCmd
|
||||
<LI><a href="#[91]">>></a> NVIC_Init
|
||||
<LI><a href="#[8b]">>></a> GPIO_PinAFConfig
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[90]"></a>uart3_init</STRONG> (Thumb, 164 bytes, Stack size 40 bytes, usart.o(i.uart3_init))
|
||||
<P><STRONG><a name="[84]"></a>uart3_init</STRONG> (Thumb, 164 bytes, Stack size 40 bytes, usart.o(i.uart3_init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 108<LI>Call Chain = uart3_init ⇒ USART_Init ⇒ RCC_GetClocksFreq
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[64]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[65]">>></a> GPIO_Init
|
||||
<LI><a href="#[80]">>></a> USART_Init
|
||||
<LI><a href="#[9b]">>></a> USART_ITConfig
|
||||
<LI><a href="#[9a]">>></a> USART_Cmd
|
||||
<LI><a href="#[69]">>></a> RCC_APB1PeriphClockCmd
|
||||
<LI><a href="#[6c]">>></a> NVIC_Init
|
||||
<LI><a href="#[75]">>></a> GPIO_PinAFConfig
|
||||
<BR>[Calls]<UL><LI><a href="#[63]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[64]">>></a> GPIO_Init
|
||||
<LI><a href="#[75]">>></a> USART_Init
|
||||
<LI><a href="#[90]">>></a> USART_ITConfig
|
||||
<LI><a href="#[8f]">>></a> USART_Cmd
|
||||
<LI><a href="#[92]">>></a> RCC_APB1PeriphClockCmd
|
||||
<LI><a href="#[91]">>></a> NVIC_Init
|
||||
<LI><a href="#[8b]">>></a> GPIO_PinAFConfig
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[91]"></a>uart4_init</STRONG> (Thumb, 162 bytes, Stack size 40 bytes, usart.o(i.uart4_init))
|
||||
<P><STRONG><a name="[85]"></a>uart4_init</STRONG> (Thumb, 162 bytes, Stack size 40 bytes, usart.o(i.uart4_init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 108<LI>Call Chain = uart4_init ⇒ USART_Init ⇒ RCC_GetClocksFreq
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[64]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[65]">>></a> GPIO_Init
|
||||
<LI><a href="#[80]">>></a> USART_Init
|
||||
<LI><a href="#[9b]">>></a> USART_ITConfig
|
||||
<LI><a href="#[9a]">>></a> USART_Cmd
|
||||
<LI><a href="#[69]">>></a> RCC_APB1PeriphClockCmd
|
||||
<LI><a href="#[6c]">>></a> NVIC_Init
|
||||
<LI><a href="#[75]">>></a> GPIO_PinAFConfig
|
||||
<BR>[Calls]<UL><LI><a href="#[63]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[64]">>></a> GPIO_Init
|
||||
<LI><a href="#[75]">>></a> USART_Init
|
||||
<LI><a href="#[90]">>></a> USART_ITConfig
|
||||
<LI><a href="#[8f]">>></a> USART_Cmd
|
||||
<LI><a href="#[92]">>></a> RCC_APB1PeriphClockCmd
|
||||
<LI><a href="#[91]">>></a> NVIC_Init
|
||||
<LI><a href="#[8b]">>></a> GPIO_PinAFConfig
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[92]"></a>uart5_init</STRONG> (Thumb, 206 bytes, Stack size 40 bytes, usart.o(i.uart5_init))
|
||||
<P><STRONG><a name="[86]"></a>uart5_init</STRONG> (Thumb, 206 bytes, Stack size 40 bytes, usart.o(i.uart5_init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 108<LI>Call Chain = uart5_init ⇒ USART_Init ⇒ RCC_GetClocksFreq
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[64]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[65]">>></a> GPIO_Init
|
||||
<LI><a href="#[80]">>></a> USART_Init
|
||||
<LI><a href="#[9b]">>></a> USART_ITConfig
|
||||
<LI><a href="#[9a]">>></a> USART_Cmd
|
||||
<LI><a href="#[69]">>></a> RCC_APB1PeriphClockCmd
|
||||
<LI><a href="#[6c]">>></a> NVIC_Init
|
||||
<LI><a href="#[75]">>></a> GPIO_PinAFConfig
|
||||
<BR>[Calls]<UL><LI><a href="#[63]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[64]">>></a> GPIO_Init
|
||||
<LI><a href="#[75]">>></a> USART_Init
|
||||
<LI><a href="#[90]">>></a> USART_ITConfig
|
||||
<LI><a href="#[8f]">>></a> USART_Cmd
|
||||
<LI><a href="#[92]">>></a> RCC_APB1PeriphClockCmd
|
||||
<LI><a href="#[91]">>></a> NVIC_Init
|
||||
<LI><a href="#[8b]">>></a> GPIO_PinAFConfig
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[93]"></a>uart6_init</STRONG> (Thumb, 162 bytes, Stack size 40 bytes, usart.o(i.uart6_init))
|
||||
<P><STRONG><a name="[87]"></a>uart6_init</STRONG> (Thumb, 162 bytes, Stack size 40 bytes, usart.o(i.uart6_init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 108<LI>Call Chain = uart6_init ⇒ USART_Init ⇒ RCC_GetClocksFreq
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[74]">>></a> RCC_APB2PeriphClockCmd
|
||||
<LI><a href="#[64]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[65]">>></a> GPIO_Init
|
||||
<LI><a href="#[80]">>></a> USART_Init
|
||||
<LI><a href="#[9b]">>></a> USART_ITConfig
|
||||
<LI><a href="#[9a]">>></a> USART_Cmd
|
||||
<LI><a href="#[6c]">>></a> NVIC_Init
|
||||
<LI><a href="#[75]">>></a> GPIO_PinAFConfig
|
||||
<BR>[Calls]<UL><LI><a href="#[8a]">>></a> RCC_APB2PeriphClockCmd
|
||||
<LI><a href="#[63]">>></a> RCC_AHB1PeriphClockCmd
|
||||
<LI><a href="#[64]">>></a> GPIO_Init
|
||||
<LI><a href="#[75]">>></a> USART_Init
|
||||
<LI><a href="#[90]">>></a> USART_ITConfig
|
||||
<LI><a href="#[8f]">>></a> USART_Cmd
|
||||
<LI><a href="#[91]">>></a> NVIC_Init
|
||||
<LI><a href="#[8b]">>></a> GPIO_PinAFConfig
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> main
|
||||
</UL>
|
||||
|
|
@ -995,15 +927,11 @@ Global Symbols
|
|||
<H3>
|
||||
Local Symbols
|
||||
</H3>
|
||||
<P><STRONG><a name="[72]"></a>SetSysClock</STRONG> (Thumb, 220 bytes, Stack size 12 bytes, system_stm32f4xx.o(i.SetSysClock))
|
||||
<P><STRONG><a name="[6f]"></a>SetSysClock</STRONG> (Thumb, 220 bytes, Stack size 12 bytes, system_stm32f4xx.o(i.SetSysClock))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = SetSysClock
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5d]">>></a> SystemInit
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[87]"></a>_printf_core</STRONG> (Thumb, 34 bytes, Stack size 24 bytes, printfb.o(i._printf_core), UNUSED)
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[86]">>></a> __0printf$bare
|
||||
</UL>
|
||||
<P>
|
||||
<H3>
|
||||
Undefined Global Symbols
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
--cpu=Cortex-M4.fp
|
||||
--cpu=Cortex-M4.fp.sp
|
||||
"..\obj\main.o"
|
||||
"..\obj\stm32f4xx_it.o"
|
||||
"..\obj\system_stm32f4xx.o"
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ LR_IROM1 0x08000000 0x00080000 { ; load region size_region
|
|||
*.o (RESET, +First)
|
||||
*(InRoot$$Sections)
|
||||
.ANY (+RO)
|
||||
.ANY (+XO)
|
||||
}
|
||||
RW_IRAM1 0x20000000 0x00020000 { ; RW data
|
||||
.ANY (+RW +ZI)
|
||||
|
|
|
|||
1619
OBJ/USART_USART.dep
1619
OBJ/USART_USART.dep
File diff suppressed because it is too large
Load Diff
|
|
@ -7,7 +7,6 @@ LR_IROM1 0x08000000 0x00080000 { ; load region size_region
|
|||
*.o (RESET, +First)
|
||||
*(InRoot$$Sections)
|
||||
.ANY (+RO)
|
||||
.ANY (+XO)
|
||||
}
|
||||
RW_IRAM1 0x20000000 0x00020000 { ; RW data
|
||||
.ANY (+RW +ZI)
|
||||
|
|
|
|||
BIN
OBJ/adc.crf
BIN
OBJ/adc.crf
Binary file not shown.
BIN
OBJ/beep.crf
BIN
OBJ/beep.crf
Binary file not shown.
BIN
OBJ/delay.crf
BIN
OBJ/delay.crf
Binary file not shown.
Binary file not shown.
BIN
OBJ/key.crf
BIN
OBJ/key.crf
Binary file not shown.
BIN
OBJ/led.crf
BIN
OBJ/led.crf
Binary file not shown.
BIN
OBJ/main.crf
BIN
OBJ/main.crf
Binary file not shown.
BIN
OBJ/misc.crf
BIN
OBJ/misc.crf
Binary file not shown.
Binary file not shown.
BIN
OBJ/spi.crf
BIN
OBJ/spi.crf
Binary file not shown.
|
|
@ -855,13 +855,12 @@ ARM Macro Assembler Page 14
|
|||
432 0000001C END
|
||||
00000000
|
||||
00000000
|
||||
Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M4.fp --apcs=int
|
||||
erwork --depend=..\obj\startup_stm32f40_41xxx.d -o..\obj\startup_stm32f40_41xxx
|
||||
.o -I.\RTE\_USART -IC:\Keil_v5\ARM\PACK\Keil\STM32F4xx_DFP\2.14.0\Drivers\CMSIS
|
||||
\Device\ST\STM32F4xx\Include -IC:\Keil_v5\ARM\CMSIS\Include --predefine="__MICR
|
||||
OLIB SETA 1" --predefine="__UVISION_VERSION SETA 525" --predefine="STM32F407xx
|
||||
SETA 1" --list=..\obj\startup_stm32f40_41xxx.lst ..\CORE\startup_stm32f40_41xxx
|
||||
.s
|
||||
Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M4.fp.sp --apcs=
|
||||
interwork --depend=..\obj\startup_stm32f40_41xxx.d -o..\obj\startup_stm32f40_41
|
||||
xxx.o -IC:\Keil_v5\ARM\PACK\Keil\STM32F4xx_DFP\2.11.0\Drivers\CMSIS\Device\ST\S
|
||||
TM32F4xx\Include --predefine="__MICROLIB SETA 1" --predefine="__UVISION_VERSION
|
||||
SETA 538" --predefine="STM32F407xx SETA 1" --list=..\obj\startup_stm32f40_41xx
|
||||
x.lst ..\CORE\startup_stm32f40_41xxx.s
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
OBJ/sys.crf
BIN
OBJ/sys.crf
Binary file not shown.
Binary file not shown.
BIN
OBJ/timer.crf
BIN
OBJ/timer.crf
Binary file not shown.
BIN
OBJ/usart.crf
BIN
OBJ/usart.crf
Binary file not shown.
|
|
@ -545,7 +545,8 @@ void USART6_IRQHandler(void) //
|
|||
uart1_data =USART_ReceiveData(USART6); //读取接收到的数据
|
||||
g_rx6_buffer[0] = uart1_data;
|
||||
//USART_ClearITPendingBit(USART1, USART_IT_RXNE);
|
||||
if ( g_usart2_rx_sta == 0 && g_rx6_buffer[0] == 0xBB )
|
||||
if ( g_usart2_rx_sta == 0 && g_rx6_buffer[0] == 0xBC ) //控制电机启动 BC 01 00 00 XX 66 //关闭1电机
|
||||
//BC 01 00 FF XX 66 //启动1电机
|
||||
{
|
||||
g_usart6_rx_buf[0] = g_rx6_buffer[0];
|
||||
g_usart6_rx_sta = 1;
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -103,7 +103,7 @@
|
|||
<bEvRecOn>1</bEvRecOn>
|
||||
<bSchkAxf>0</bSchkAxf>
|
||||
<bTchkAxf>0</bTchkAxf>
|
||||
<nTsel>11</nTsel>
|
||||
<nTsel>5</nTsel>
|
||||
<sDll></sDll>
|
||||
<sDllPa></sDllPa>
|
||||
<sDlgDll></sDlgDll>
|
||||
|
|
@ -153,63 +153,14 @@
|
|||
<Name>(105=-1,-1,-1,-1,0)</Name>
|
||||
</SetRegEntry>
|
||||
</TargetDriverDllRegistry>
|
||||
<Breakpoint>
|
||||
<Bp>
|
||||
<Number>0</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>339</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>134220986</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>1</BreakIfRCount>
|
||||
<Filename>..\SYSTEM\usart\usart.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression>\\USART\../SYSTEM/usart/usart.c\339</Expression>
|
||||
</Bp>
|
||||
<Bp>
|
||||
<Number>1</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>294</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>134222574</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>1</BreakIfRCount>
|
||||
<Filename>.\main.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression>\\USART\main.c\294</Expression>
|
||||
</Bp>
|
||||
<Bp>
|
||||
<Number>2</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>226</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>0</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>0</BreakIfRCount>
|
||||
<Filename>.\main.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression></Expression>
|
||||
</Bp>
|
||||
</Breakpoint>
|
||||
<Breakpoint/>
|
||||
<Tracepoint>
|
||||
<THDelay>0</THDelay>
|
||||
</Tracepoint>
|
||||
<DebugFlag>
|
||||
<trace>0</trace>
|
||||
<periodic>0</periodic>
|
||||
<aLwin>1</aLwin>
|
||||
<aLwin>0</aLwin>
|
||||
<aCover>0</aCover>
|
||||
<aSer1>0</aSer1>
|
||||
<aSer2>0</aSer2>
|
||||
|
|
@ -247,6 +198,7 @@
|
|||
<pMultCmdsp></pMultCmdsp>
|
||||
<DebugDescription>
|
||||
<Enable>1</Enable>
|
||||
<EnableFlashSeq>0</EnableFlashSeq>
|
||||
<EnableLog>0</EnableLog>
|
||||
<Protocol>2</Protocol>
|
||||
<DbgClock>10000000</DbgClock>
|
||||
|
|
|
|||
|
|
@ -10,14 +10,14 @@
|
|||
<TargetName>USART</TargetName>
|
||||
<ToolsetNumber>0x4</ToolsetNumber>
|
||||
<ToolsetName>ARM-ADS</ToolsetName>
|
||||
<pCCUsed>5050169::V5.05 update 2 (build 169)::ARMCC</pCCUsed>
|
||||
<pCCUsed>5060422::V5.06 update 4 (build 422)::ARMCC</pCCUsed>
|
||||
<uAC6>0</uAC6>
|
||||
<TargetOption>
|
||||
<TargetCommonOption>
|
||||
<Device>STM32F407VETx</Device>
|
||||
<Vendor>STMicroelectronics</Vendor>
|
||||
<PackID>Keil.STM32F4xx_DFP.2.14.0</PackID>
|
||||
<PackURL>http://www.keil.com/pack/</PackURL>
|
||||
<PackID>Keil.STM32F4xx_DFP.2.11.0</PackID>
|
||||
<PackURL>http://www.keil.com/pack</PackURL>
|
||||
<Cpu>IRAM(0x20000000,0x00020000) IRAM2(0x10000000,0x00010000) IROM(0x08000000,0x00080000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE</Cpu>
|
||||
<FlashUtilSpec></FlashUtilSpec>
|
||||
<StartupFile></StartupFile>
|
||||
|
|
@ -184,6 +184,9 @@
|
|||
<hadXRAM>0</hadXRAM>
|
||||
<uocXRam>0</uocXRam>
|
||||
<RvdsVP>2</RvdsVP>
|
||||
<RvdsMve>0</RvdsMve>
|
||||
<RvdsCdeCp>0</RvdsCdeCp>
|
||||
<nBranchProt>0</nBranchProt>
|
||||
<hadIRAM2>1</hadIRAM2>
|
||||
<hadIROM2>0</hadIROM2>
|
||||
<StupSel>8</StupSel>
|
||||
|
|
@ -350,7 +353,7 @@
|
|||
<NoWarn>0</NoWarn>
|
||||
<uSurpInc>0</uSurpInc>
|
||||
<useXO>0</useXO>
|
||||
<uClangAs>0</uClangAs>
|
||||
<ClangAsOpt>4</ClangAsOpt>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
|
|
|
|||
346
USER/main.c
346
USER/main.c
|
|
@ -178,6 +178,8 @@ extern uint16_t g_usart3_rx_sta;
|
|||
extern uint16_t g_usart3_rx_state;
|
||||
|
||||
|
||||
extern uint16_t g_usart6_rx_state;
|
||||
|
||||
extern uint8_t g_rx1_buffer[RXBUFFERSIZE]; /* HAL库使用的串口接收缓冲 */
|
||||
/* 接收缓冲, 最大USART_REC_LEN个字节. */
|
||||
extern uint8_t g_usart2_rx_buf[USART_REC_LEN];
|
||||
|
|
@ -200,13 +202,22 @@ extern uint8_t g_usart6_rx_buf[USART_REC_LEN];
|
|||
extern uint16_t g_usart6_rx_sta;
|
||||
extern uint8_t g_rx6_buffer[RXBUFFERSIZE]; /* HAL库使用的串口接收缓冲 */
|
||||
|
||||
|
||||
#define D_value 100 //脉络差值
|
||||
int main(void)
|
||||
{
|
||||
|
||||
u8 t;
|
||||
u8 len;
|
||||
u16 times=0;
|
||||
u8 start_vein_flg =0; //寻脉启动标志
|
||||
int16_t adc1_zoo =0;
|
||||
int16_t adc2_zoo =0;
|
||||
int16_t adc3_zoo =0; //三路脉的零点
|
||||
|
||||
int16_t adc1_current =0;
|
||||
int16_t adc2_current =0;
|
||||
int16_t adc3_current =0; //三路脉的当前值
|
||||
|
||||
uint8_t frame_updata[6] = {0x30,0x30,0x30,0x30,0x30,0x30};
|
||||
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
|
||||
delay_init(168); //延时初始化
|
||||
|
|
@ -217,18 +228,18 @@ int main(void)
|
|||
uart5_init(115200);
|
||||
uart6_init(115200); //串口6初始化波特率为115200 上传到slide
|
||||
gpio_Init(); //初始化gpio
|
||||
TIM1_PWM_Init(16, 32);
|
||||
//TIM1_PWM_Init(16, 32);
|
||||
//TIM2_PWM_Init(16, 32);
|
||||
TIM4_PWM_Init(16, 32);
|
||||
TIM_Cmd(TIM1, DISABLE);
|
||||
//TIM4_PWM_Init(16, 32);
|
||||
//TIM_Cmd(TIM1, DISABLE);
|
||||
//TIM_Cmd(TIM2, DISABLE);
|
||||
TIM_Cmd(TIM4, DISABLE);
|
||||
//TIM_Cmd(TIM4, DISABLE);
|
||||
//---------------------------------------------
|
||||
// 初始化DRV8832电机驱动
|
||||
DRV8832_Init();
|
||||
|
||||
// 初始化PWM定时器(如果需要调速)
|
||||
PWM_Timer_Init();
|
||||
// PWM_Timer_Init();
|
||||
|
||||
motor_spi1_init();
|
||||
motor_spi2_init();
|
||||
|
|
@ -237,45 +248,100 @@ int main(void)
|
|||
// 使能全局中断
|
||||
__enable_irq();
|
||||
//=======================================================================
|
||||
L_Motor_Control(MOTOR_REVERSE);
|
||||
M_Motor_Control(MOTOR_REVERSE);
|
||||
R_Motor_Control(MOTOR_REVERSE);
|
||||
delay_ms(2000);
|
||||
L_Motor_Control(MOTOR_STOP);
|
||||
M_Motor_Control(MOTOR_STOP);
|
||||
R_Motor_Control(MOTOR_STOP); //上电初始化后,先将电机提升到上位,不一定是到顶,这个可以后期待定
|
||||
//=======================================================================
|
||||
//测试电机3路
|
||||
while(0) {
|
||||
// 示例1:基本控制(全速正反转)
|
||||
Motor_Control(MOTOR_FORWARD); // 正转
|
||||
delay_ms(5000);
|
||||
Motor_SafeDirectionChange(MOTOR_REVERSE); // 安全切换到反转
|
||||
delay_ms(5000);
|
||||
|
||||
Motor_Control(MOTOR_BRAKE); // 刹车
|
||||
delay_ms(500);
|
||||
|
||||
Motor_Control(MOTOR_STOP); // 停止(滑行)
|
||||
delay_ms(1000);
|
||||
|
||||
// 示例2:PWM调速演示
|
||||
// 正转加速
|
||||
// for(uint8_t speed = 0; speed <= 100; speed += 10) {
|
||||
// Motor_SetSpeed(speed, MOTOR_FORWARD);
|
||||
// delay_ms(200);
|
||||
// }
|
||||
// delay_ms(2000);
|
||||
// // 示例1:基本控制(全速正反转)
|
||||
// Motor_Control(MOTOR_FORWARD); // 正转
|
||||
// // delay_ms(5000);
|
||||
// Motor_SafeDirectionChange(MOTOR_REVERSE); // 安全切换到反转
|
||||
// // delay_ms(5000);
|
||||
//
|
||||
// // 正转减速
|
||||
// for(uint8_t speed = 100; speed > 0; speed -= 10) {
|
||||
// Motor_SetSpeed(speed, MOTOR_FORWARD);
|
||||
// delay_ms(200);
|
||||
// }
|
||||
// Motor_SetSpeed(0, MOTOR_STOP);
|
||||
// Motor_Control(MOTOR_BRAKE); // 刹车
|
||||
// delay_ms(500);
|
||||
//
|
||||
// Motor_Control(MOTOR_STOP); // 停止(滑行)
|
||||
// delay_ms(1000);
|
||||
|
||||
// 示例2:PWM调速演示
|
||||
|
||||
// L_Motor_SetSpeed(50, MOTOR_FORWARD);
|
||||
// M_Motor_SetSpeed(50, MOTOR_FORWARD);
|
||||
// R_Motor_SetSpeed(50, MOTOR_FORWARD);
|
||||
// delay_ms(5000);
|
||||
// L_Motor_Control(MOTOR_STOP);
|
||||
// M_Motor_Control(MOTOR_STOP);
|
||||
// R_Motor_Control(MOTOR_STOP);
|
||||
//
|
||||
// L_Motor_SetSpeed(50, MOTOR_REVERSE);
|
||||
// M_Motor_SetSpeed(50, MOTOR_REVERSE);
|
||||
// R_Motor_SetSpeed(50, MOTOR_REVERSE);
|
||||
// delay_ms(5000);
|
||||
// L_Motor_Control(MOTOR_STOP);
|
||||
// M_Motor_Control(MOTOR_STOP);
|
||||
// R_Motor_Control(MOTOR_STOP);
|
||||
// // 正转加速
|
||||
for(uint8_t speed = 0; speed <= 100; speed += 10)
|
||||
{
|
||||
L_Motor_SetSpeed(speed, MOTOR_FORWARD);
|
||||
M_Motor_SetSpeed(speed, MOTOR_FORWARD);
|
||||
R_Motor_SetSpeed(speed, MOTOR_FORWARD);
|
||||
delay_ms(200);
|
||||
}
|
||||
delay_ms(2000);
|
||||
|
||||
// // 正转减速
|
||||
// for(uint8_t speed = 100; speed > 0; speed -= 10)
|
||||
// {
|
||||
// L_Motor_SetSpeed(speed, MOTOR_FORWARD);
|
||||
// M_Motor_SetSpeed(speed, MOTOR_FORWARD);
|
||||
// R_Motor_SetSpeed(speed, MOTOR_FORWARD);
|
||||
// delay_ms(200);
|
||||
// }
|
||||
|
||||
|
||||
L_Motor_SetSpeed(0, MOTOR_STOP);
|
||||
M_Motor_SetSpeed(0, MOTOR_STOP);
|
||||
R_Motor_SetSpeed(0, MOTOR_STOP);
|
||||
// 反转加速
|
||||
for(uint8_t speed = 0; speed <= 100; speed += 10)
|
||||
{
|
||||
L_Motor_SetSpeed(speed, MOTOR_REVERSE);
|
||||
M_Motor_SetSpeed(speed, MOTOR_REVERSE);
|
||||
R_Motor_SetSpeed(speed, MOTOR_REVERSE);
|
||||
delay_ms(200);
|
||||
}
|
||||
delay_ms(2000);
|
||||
|
||||
// // 反转减速
|
||||
// for(uint8_t speed = 100; speed > 0; speed -= 10)
|
||||
// {
|
||||
// L_Motor_SetSpeed(speed, MOTOR_REVERSE);
|
||||
// M_Motor_SetSpeed(speed, MOTOR_REVERSE);
|
||||
// R_Motor_SetSpeed(speed, MOTOR_REVERSE);
|
||||
// delay_ms(200);
|
||||
// }
|
||||
|
||||
|
||||
delay_ms(1000);
|
||||
|
||||
// 检查故障状态
|
||||
if(Motor_GetFaultStatus()) {
|
||||
if(L_Motor_GetFaultStatus()) {
|
||||
// 发生故障,停止电机
|
||||
Motor_Control(MOTOR_STOP);
|
||||
L_Motor_Control(MOTOR_STOP);
|
||||
|
||||
// 可以添加故障处理代码,如闪烁LED或串口输出
|
||||
// ...
|
||||
|
||||
// 等待故障清除
|
||||
while(Motor_GetFaultStatus()) {
|
||||
while(L_Motor_GetFaultStatus()) {
|
||||
delay_ms(100);
|
||||
}
|
||||
}
|
||||
|
|
@ -285,23 +351,166 @@ int main(void)
|
|||
//=======================================================================
|
||||
while(1)
|
||||
{
|
||||
printf("I love you lao zhang\n");
|
||||
// printf("I love you lao zhang\n");
|
||||
|
||||
delay_ms(300);
|
||||
// delay_ms(300);
|
||||
|
||||
printf("I love you zhengshuo\n");
|
||||
// printf("I love you zhengshuo\n");
|
||||
|
||||
delay_ms(300);
|
||||
// delay_ms(300);
|
||||
|
||||
// Uart5_Send_data(frame_updata,6);
|
||||
//根据指令控制电机的动作
|
||||
if(g_usart6_rx_state==1) //串口6的接收数据
|
||||
{
|
||||
|
||||
g_usart6_rx_state = 0;
|
||||
if(g_usart6_rx_buf[1]==0x01) //1通道 BC 01 00 55 XX 66 启动
|
||||
{
|
||||
if(g_usart6_rx_buf[3]==0x55)
|
||||
{
|
||||
L_Motor_Control(MOTOR_FORWARD); //启动电机正传
|
||||
}
|
||||
if(g_usart6_rx_buf[3]==0xaa) //BC 01 00 aa XX 66 反转
|
||||
{
|
||||
|
||||
L_Motor_Control(MOTOR_REVERSE);
|
||||
}
|
||||
if(g_usart6_rx_buf[3]==0xff) //BC 01 00 ff XX 66 关闭
|
||||
{
|
||||
|
||||
L_Motor_Control(MOTOR_STOP);
|
||||
}
|
||||
|
||||
}
|
||||
if(g_usart6_rx_buf[1]==0x02) //2通道
|
||||
{
|
||||
if(g_usart6_rx_buf[3]==0x55)
|
||||
{
|
||||
M_Motor_Control(MOTOR_FORWARD); //启动电机正传
|
||||
}
|
||||
if(g_usart6_rx_buf[3]==0xaa) //BC 02 00 aa XX 66 反转
|
||||
{
|
||||
|
||||
M_Motor_Control(MOTOR_REVERSE);
|
||||
}
|
||||
if(g_usart6_rx_buf[3]==0xff) //BC 02 00 ff XX 66 关闭
|
||||
{
|
||||
|
||||
M_Motor_Control(MOTOR_STOP);
|
||||
}
|
||||
|
||||
}
|
||||
if(g_usart6_rx_buf[1]==0x03) //3通道
|
||||
{
|
||||
if(g_usart6_rx_buf[3]==0x55)
|
||||
{
|
||||
R_Motor_Control(MOTOR_FORWARD); //启动电机正传
|
||||
}
|
||||
if(g_usart6_rx_buf[3]==0xaa) //BC 03 00 aa XX 66 反转
|
||||
{
|
||||
|
||||
R_Motor_Control(MOTOR_REVERSE);
|
||||
}
|
||||
if(g_usart6_rx_buf[3]==0xff) //BC 03 00 ff XX 66 关闭
|
||||
{
|
||||
|
||||
R_Motor_Control(MOTOR_STOP);
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------
|
||||
if(g_usart6_rx_buf[1]==0x04) //如果地址是04 则是启动诊脉三个电机运行,先运行中间电机,其他两个电机延时后启动,中间电机寻到脉后,停止,
|
||||
//其他两个电机也是自动寻到脉后停止
|
||||
{
|
||||
if(g_usart6_rx_buf[3]==0xaa)
|
||||
{
|
||||
start_vein_flg =1; //寻脉启动标志
|
||||
}
|
||||
if(g_usart6_rx_buf[3]==0x55)
|
||||
{
|
||||
start_vein_flg =2; //停止寻脉,开始诊脉
|
||||
}
|
||||
if(g_usart6_rx_buf[3]==0xff)
|
||||
{
|
||||
start_vein_flg =0; //停止诊脉,电机提升后停止
|
||||
}
|
||||
//可以增加指令,指导电机在诊脉过程中进行浮中沉脉的动作
|
||||
}
|
||||
}
|
||||
//=============================================================================================
|
||||
//以下是自动控制部分,是否要转移到定制中断中处理?
|
||||
if(start_vein_flg == 1)
|
||||
{
|
||||
if((adc1_current-adc1_zoo)<= D_value)
|
||||
{
|
||||
L_Motor_Control(MOTOR_FORWARD); //电机1正传
|
||||
}
|
||||
else
|
||||
{
|
||||
L_Motor_Control(MOTOR_STOP); //电机1停止
|
||||
}
|
||||
|
||||
if((adc2_current-adc2_zoo)<= D_value)
|
||||
{
|
||||
M_Motor_Control(MOTOR_FORWARD); //电机2正传
|
||||
}
|
||||
else
|
||||
{
|
||||
M_Motor_Control(MOTOR_STOP); //电机2停止
|
||||
}
|
||||
|
||||
if((adc1_current-adc1_zoo)<= D_value)
|
||||
{
|
||||
R_Motor_Control(MOTOR_FORWARD); //电机3正传
|
||||
}
|
||||
else
|
||||
{
|
||||
R_Motor_Control(MOTOR_STOP); //电机3停止
|
||||
}
|
||||
}
|
||||
if(start_vein_flg == 0) //停止
|
||||
{
|
||||
L_Motor_Control(MOTOR_REVERSE);
|
||||
M_Motor_Control(MOTOR_REVERSE);
|
||||
R_Motor_Control(MOTOR_REVERSE);
|
||||
delay_ms(2000);
|
||||
L_Motor_Control(MOTOR_STOP);
|
||||
M_Motor_Control(MOTOR_STOP);
|
||||
R_Motor_Control(MOTOR_STOP); //停止诊脉后电机提升
|
||||
}
|
||||
|
||||
//==============================================================
|
||||
//以下是ADC采集
|
||||
//接收到的ADC数据 首位BB 结尾是66 中间的数据是 01 ADCL ADCH CRC8
|
||||
//BB 01 A2 08 73 66
|
||||
//BB -首位
|
||||
//01 -
|
||||
//A2 -ADCL
|
||||
//08 -ADCH
|
||||
//73 -CRC8
|
||||
//66 -结尾 //
|
||||
//以上数据,如果传给上位机,无法分清楚是哪个通道的数据,因此将第二个数据设置为通道
|
||||
|
||||
Uart5_Send_data(frame_updata,6);
|
||||
//-------------------------------------------------
|
||||
if(g_usart1_rx_state == 1)
|
||||
{
|
||||
// g_usart1_rx_buf[1] = 0x01;
|
||||
// g_usart1_rx_buf[3] = 0x34;
|
||||
// g_usart1_rx_buf[4] = crc8_standard(g_usart1_rx_buf,4);
|
||||
|
||||
if(start_vein_flg==0) //未启动前,采集到的数据为当前通道的零点
|
||||
{
|
||||
adc1_zoo =((uint16_t)g_usart1_rx_buf[3]<<8)|g_usart1_rx_buf[2];
|
||||
|
||||
}
|
||||
else //当前采集到的值
|
||||
{
|
||||
adc1_current = ((uint16_t)g_usart1_rx_buf[3]<<8)|g_usart1_rx_buf[2];
|
||||
}
|
||||
g_usart1_rx_state = 0;
|
||||
//--------------------------------------------------------------
|
||||
g_usart1_rx_buf[1]=0x01; //实际这个是原始数据没有变化
|
||||
g_usart1_rx_buf[4] = crc8_standard(g_usart1_rx_buf,4); //重新校验
|
||||
//--------------------------------------------------------------
|
||||
memcpy(frame_updata,g_usart1_rx_buf,6 );
|
||||
memset(g_usart1_rx_buf, 0x0, 6);
|
||||
g_rx1_buffer[0] = 0x0;
|
||||
|
|
@ -309,11 +518,21 @@ int main(void)
|
|||
}
|
||||
if(g_usart2_rx_state == 1)
|
||||
{
|
||||
// g_usart1_rx_buf[1] = 0x01;
|
||||
// g_usart1_rx_buf[3] = 0x34;
|
||||
// g_usart1_rx_buf[4] = crc8_standard(g_usart1_rx_buf,4);
|
||||
|
||||
if(start_vein_flg==0) //未启动前,采集到的数据为当前通道的零点
|
||||
{
|
||||
adc2_zoo=((uint16_t)g_usart2_rx_buf[3]<<8)|g_usart2_rx_buf[2];
|
||||
|
||||
}
|
||||
else //当前采集到的值
|
||||
{
|
||||
adc2_current = ((uint16_t)g_usart2_rx_buf[3]<<8)|g_usart2_rx_buf[2];
|
||||
}
|
||||
g_usart2_rx_state = 0;
|
||||
//-------------------------------------------------------------------
|
||||
g_usart2_rx_buf[1]=0x02; //通道设置为02
|
||||
g_usart2_rx_buf[4] = crc8_standard(g_usart2_rx_buf,4); //重新校验
|
||||
//-------------------------------------------------------------------
|
||||
memcpy(frame_updata,g_usart2_rx_buf,6 );
|
||||
memset(g_usart2_rx_buf, 0x0, 6);
|
||||
g_rx2_buffer[0] = 0x0;
|
||||
|
|
@ -321,11 +540,22 @@ int main(void)
|
|||
}
|
||||
if(g_usart3_rx_state == 1)
|
||||
{
|
||||
// g_usart1_rx_buf[1] = 0x01;
|
||||
// g_usart1_rx_buf[3] = 0x34;
|
||||
// g_usart1_rx_buf[4] = crc8_standard(g_usart1_rx_buf,4);
|
||||
|
||||
if(start_vein_flg==0) //未启动前,采集到的数据为当前通道的零点
|
||||
{
|
||||
adc3_zoo=((uint16_t)g_usart3_rx_buf[3]<<8)|g_usart3_rx_buf[2];
|
||||
|
||||
}
|
||||
else //当前采集到的值
|
||||
{
|
||||
adc3_current = ((uint16_t)g_usart3_rx_buf[3]<<8)|g_usart3_rx_buf[2];
|
||||
}
|
||||
|
||||
g_usart3_rx_state = 0;
|
||||
//-------------------------------------------------------------------
|
||||
g_usart3_rx_buf[1]=0x03; //通道设置为03
|
||||
g_usart3_rx_buf[4] = crc8_standard(g_usart3_rx_buf,4); //重新校验
|
||||
//-------------------------------------------------------------------
|
||||
memcpy(frame_updata,g_usart3_rx_buf,6 );
|
||||
memset(g_usart3_rx_buf, 0x0, 6);
|
||||
g_rx3_buffer[0] = 0x0;
|
||||
|
|
@ -333,30 +563,6 @@ int main(void)
|
|||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
|
||||
// if(USART_RX_STA&0x8000)
|
||||
// {
|
||||
// len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
|
||||
// printf("\r\n您发送的消息为:\r\n");
|
||||
// for(t=0;t<len;t++)
|
||||
// {
|
||||
// USART_SendData(USART1, USART_RX_BUF[t]); //向串口1发送数据
|
||||
// while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
|
||||
// }
|
||||
// printf("\r\n\r\n");//插入换行
|
||||
// USART_RX_STA=0;
|
||||
// }else
|
||||
// {
|
||||
// times++;
|
||||
// if(times%5000==0)
|
||||
// {
|
||||
// printf("\r\nALIENTEK 探索者STM32F407开发板 串口实验\r\n");
|
||||
// printf("正点原子@ALIENTEK\r\n\r\n\r\n");
|
||||
// }
|
||||
// if(times%200==0)printf("请输入数据,以回车键结束\r\n");
|
||||
// if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
|
||||
// delay_ms(10);
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
38
readme.txt
38
readme.txt
|
|
@ -1,37 +1,7 @@
|
|||
实验器材:
|
||||
探索者STM32F4开发板
|
||||
|
||||
实验目的:
|
||||
学习串口的使用(接收与发送)
|
||||
|
||||
硬件资源:
|
||||
1,DS0(连接在PF9)
|
||||
2,串口1(波特率:115200,PA9/PA10连接在板载USB转串口芯片CH340上面)
|
||||
|
||||
|
||||
实验现象:
|
||||
本实验,STM32通过串口1和上位机对话,STM32在收到上位机发过来的字符串(以回车换
|
||||
行结束)后,原原本本的返回给上位机。下载后,DS0闪烁,提示程序在运行,同时每隔
|
||||
一定时间,通过串口1输出一段信息到电脑。
|
||||
|
||||
注意事项:
|
||||
1,电脑端串口调试助手波特率必须是115200.
|
||||
2,请使用XCOM/SSCOM串口调试助手,其他串口助手可能控制DTR/RTS导致MCU复位/程序不运行
|
||||
3,串口输入字符串以回车换行结束.
|
||||
4,请用USB线连接在USB_232,找到USB转串口后测试本例程.
|
||||
5,P6的PA9/PA10必须通过跳线帽连接在RXD/TXD上.
|
||||
|
||||
|
||||
正点原子@ALIENTEK
|
||||
2014-10-24
|
||||
广州市星翼电子科技有限公司
|
||||
电话:020-38271790
|
||||
传真:020-36773971
|
||||
购买:http://shop62103354.taobao.com
|
||||
http://shop62057469.taobao.com
|
||||
公司网站:www.alientek.com
|
||||
技术论坛:www.openedv.com
|
||||
|
||||
1、完成ADC采集
|
||||
2、完成电机简单控制
|
||||
3、完成通过ADC值控制电机的向下运行,并停止
|
||||
4、问题:PWM控制电机的过程中,单步可以运转,全速不动作,中断发现,停止的时间比运行的时间长,这个有待进一步调试
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue