提交CAN通信代码
This commit is contained in:
parent
f05dadf536
commit
7e8ee6641d
@ -403,16 +403,6 @@
|
|||||||
<Group>
|
<Group>
|
||||||
<GroupName>Driver</GroupName>
|
<GroupName>Driver</GroupName>
|
||||||
<Files>
|
<Files>
|
||||||
<File>
|
|
||||||
<FileName>GPIO.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\..\src\Driver\GPIO.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>USART.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\..\src\Driver\USART.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
<File>
|
||||||
<FileName>hall.c</FileName>
|
<FileName>hall.c</FileName>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
@ -428,6 +418,21 @@
|
|||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<FilePath>..\..\src\Driver\motor.c</FilePath>
|
<FilePath>..\..\src\Driver\motor.c</FilePath>
|
||||||
</File>
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>adc.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>..\..\src\Driver\adc.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>can.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>..\..\src\Driver\can.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>led.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>..\..\src\Driver\led.c</FilePath>
|
||||||
|
</File>
|
||||||
</Files>
|
</Files>
|
||||||
</Group>
|
</Group>
|
||||||
<Group>
|
<Group>
|
||||||
|
@ -1,97 +0,0 @@
|
|||||||
/*******************************************************************************
|
|
||||||
* @file GPIO.c
|
|
||||||
* @author: MQjehovah mail:MQjehovah@hotmail.com
|
|
||||||
* @version 1.0.1
|
|
||||||
* @date 2017.5.16
|
|
||||||
* @brief
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
*******************************************************************************/
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
|
||||||
#include "GPIO.h"
|
|
||||||
/* Definition ----------------------------------------------------------------*/
|
|
||||||
GPIO_DEV PA0 = {GPIOA,GPIO_Pin_0};
|
|
||||||
GPIO_DEV PA1 = {GPIOA,GPIO_Pin_1};
|
|
||||||
GPIO_DEV PA2 = {GPIOA,GPIO_Pin_2};
|
|
||||||
GPIO_DEV PA3 = {GPIOA,GPIO_Pin_3};
|
|
||||||
GPIO_DEV PA4 = {GPIOA,GPIO_Pin_4};
|
|
||||||
GPIO_DEV PA5 = {GPIOA,GPIO_Pin_5};
|
|
||||||
GPIO_DEV PA6 = {GPIOA,GPIO_Pin_6};
|
|
||||||
GPIO_DEV PA7 = {GPIOA,GPIO_Pin_7};
|
|
||||||
GPIO_DEV PA8 = {GPIOA,GPIO_Pin_8};
|
|
||||||
GPIO_DEV PA9 = {GPIOA,GPIO_Pin_9};
|
|
||||||
GPIO_DEV PA10 = {GPIOA,GPIO_Pin_10};
|
|
||||||
GPIO_DEV PA11 = {GPIOA,GPIO_Pin_11};
|
|
||||||
GPIO_DEV PA12 = {GPIOA,GPIO_Pin_12};
|
|
||||||
GPIO_DEV PA13 = {GPIOA,GPIO_Pin_13};
|
|
||||||
GPIO_DEV PA14 = {GPIOA,GPIO_Pin_14};
|
|
||||||
GPIO_DEV PA15 = {GPIOA,GPIO_Pin_15};
|
|
||||||
|
|
||||||
|
|
||||||
GPIO_DEV PB0 = {GPIOB,GPIO_Pin_0};
|
|
||||||
GPIO_DEV PB1 = {GPIOB,GPIO_Pin_1};
|
|
||||||
GPIO_DEV PB2 = {GPIOB,GPIO_Pin_2};
|
|
||||||
GPIO_DEV PB3 = {GPIOB,GPIO_Pin_3};
|
|
||||||
GPIO_DEV PB4 = {GPIOB,GPIO_Pin_4};
|
|
||||||
GPIO_DEV PB5 = {GPIOB,GPIO_Pin_5};
|
|
||||||
GPIO_DEV PB6 = {GPIOB,GPIO_Pin_6};
|
|
||||||
GPIO_DEV PB7 = {GPIOB,GPIO_Pin_7};
|
|
||||||
GPIO_DEV PB8 = {GPIOB,GPIO_Pin_8};
|
|
||||||
GPIO_DEV PB9 = {GPIOB,GPIO_Pin_9};
|
|
||||||
GPIO_DEV PB10 = {GPIOB,GPIO_Pin_10};
|
|
||||||
GPIO_DEV PB11 = {GPIOB,GPIO_Pin_11};
|
|
||||||
GPIO_DEV PB12 = {GPIOB,GPIO_Pin_12};
|
|
||||||
GPIO_DEV PB13 = {GPIOB,GPIO_Pin_13};
|
|
||||||
GPIO_DEV PB14 = {GPIOB,GPIO_Pin_14};
|
|
||||||
GPIO_DEV PB15 = {GPIOB,GPIO_Pin_15};
|
|
||||||
|
|
||||||
GPIO_DEV PC13 = {GPIOC,GPIO_Pin_13};
|
|
||||||
GPIO_DEV PC14 = {GPIOC,GPIO_Pin_14};
|
|
||||||
|
|
||||||
//GPIO_DEV PIN_MAP[10];
|
|
||||||
|
|
||||||
/* Functions -----------------------------------------------------------------*/
|
|
||||||
/*******************************************************************************
|
|
||||||
* @brief GPIO端口配置
|
|
||||||
* @param None
|
|
||||||
* @retval None
|
|
||||||
* @Note None
|
|
||||||
*******************************************************************************/
|
|
||||||
void GPIO_Config(GPIO_DEV *dev,GPIOMode_TypeDef mode)
|
|
||||||
{
|
|
||||||
GPIO_InitTypeDef GPIO_InitStructure;
|
|
||||||
|
|
||||||
GPIO_InitStructure.GPIO_Pin = dev->PIN ;
|
|
||||||
GPIO_InitStructure.GPIO_Mode = mode;
|
|
||||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
||||||
GPIO_Init(dev->PORT,&GPIO_InitStructure);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
* @brief GPIO端口电平设置
|
|
||||||
* @param None
|
|
||||||
* @retval None
|
|
||||||
* @Note None
|
|
||||||
*******************************************************************************/
|
|
||||||
void GPIO_WritePin(GPIO_DEV *dev,GPIO_STA state)
|
|
||||||
{
|
|
||||||
if(state == HIGH)
|
|
||||||
GPIO_SetBits(dev->PORT,dev->PIN);
|
|
||||||
else
|
|
||||||
GPIO_ResetBits(dev->PORT,dev->PIN);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
* @brief 读取GPIO端口电平
|
|
||||||
* @param None
|
|
||||||
* @retval None
|
|
||||||
* @Note None
|
|
||||||
*******************************************************************************/
|
|
||||||
GPIO_STA GPIO_ReadPin(GPIO_DEV *dev)
|
|
||||||
{
|
|
||||||
if(GPIO_ReadInputDataBit(dev->PORT,dev->PIN))//读取单个输入端口的数据
|
|
||||||
return HIGH;
|
|
||||||
else
|
|
||||||
return LOW;
|
|
||||||
}
|
|
||||||
/*********************************END OF FILE**********************************/
|
|
@ -1,172 +0,0 @@
|
|||||||
/*******************************************************************************
|
|
||||||
* @file USART.c
|
|
||||||
* @author: MQjehovah mail:MQjehovah@hotmail.com
|
|
||||||
* @version 1.0.0
|
|
||||||
* @date 2016.3.18
|
|
||||||
* @brief
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
*******************************************************************************/
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
|
||||||
#include "USART.h"
|
|
||||||
|
|
||||||
/* Definition ----------------------------------------------------------------*/
|
|
||||||
#define Debug_USART USART1
|
|
||||||
#ifdef __GNUC__
|
|
||||||
/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
|
|
||||||
set to 'Yes') calls __io_putchar() */
|
|
||||||
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
|
|
||||||
#else
|
|
||||||
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
|
|
||||||
#endif /* __GNUC__ */
|
|
||||||
|
|
||||||
|
|
||||||
GPIO_DEV * RS485EN = NULL;
|
|
||||||
/* Functions -----------------------------------------------------------------*/
|
|
||||||
/*******************************************************************************
|
|
||||||
* @brief USART管脚配置
|
|
||||||
* @param None
|
|
||||||
* @retval None
|
|
||||||
* @Note None
|
|
||||||
*******************************************************************************/
|
|
||||||
void USART_GPIO_Config(USART_TypeDef *USARTx)
|
|
||||||
{
|
|
||||||
if(USARTx == USART1)
|
|
||||||
{
|
|
||||||
GPIO_Config(&PA9,GPIO_Mode_AF_PP);
|
|
||||||
GPIO_Config(&PA10,GPIO_Mode_IN_FLOATING);
|
|
||||||
}
|
|
||||||
if(USARTx == USART2)
|
|
||||||
{
|
|
||||||
GPIO_Config(&PA2,GPIO_Mode_AF_PP);
|
|
||||||
GPIO_Config(&PA3,GPIO_Mode_IN_FLOATING);
|
|
||||||
}
|
|
||||||
if(USARTx == USART3)
|
|
||||||
{
|
|
||||||
GPIO_Config(&PB10,GPIO_Mode_AF_PP);
|
|
||||||
GPIO_Config(&PB11,GPIO_Mode_IN_FLOATING);
|
|
||||||
}
|
|
||||||
// if(USARTx == USART4)
|
|
||||||
// {
|
|
||||||
// GPIO_Config(&PA9,GPIO_Mode_AF_PP);
|
|
||||||
// GPIO_Config(&PA10,GPIO_Mode_IN_FLOATING);
|
|
||||||
// }
|
|
||||||
// if(USARTx == USART5)
|
|
||||||
// {
|
|
||||||
// GPIO_Config(&PA9,GPIO_Mode_AF_PP);
|
|
||||||
// GPIO_Config(&PA10,GPIO_Mode_IN_FLOATING);
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
/*******************************************************************************
|
|
||||||
* @brief USART初始化
|
|
||||||
* @param None
|
|
||||||
* @retval None
|
|
||||||
* @Note None
|
|
||||||
*******************************************************************************/
|
|
||||||
void USART_Config(USART_TypeDef *USARTx,u16 Buand)
|
|
||||||
{
|
|
||||||
USART_InitTypeDef USART_InitStructure;
|
|
||||||
|
|
||||||
USART_GPIO_Config(USARTx);
|
|
||||||
USART_InitStructure.USART_BaudRate = Buand;
|
|
||||||
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
|
|
||||||
USART_InitStructure.USART_StopBits = USART_StopBits_1;
|
|
||||||
USART_InitStructure.USART_Parity = USART_Parity_No ;
|
|
||||||
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
|
|
||||||
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
|
|
||||||
USART_Init(USARTx, &USART_InitStructure);
|
|
||||||
USART_Cmd(USARTx, ENABLE);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
* @brief 485初始化
|
|
||||||
* @param None
|
|
||||||
* @retval None
|
|
||||||
* @Note None
|
|
||||||
*******************************************************************************/
|
|
||||||
void USART_485_Config(USART_TypeDef *USARTx,u16 Buand,GPIO_DEV *ENPIN)
|
|
||||||
{
|
|
||||||
RS485EN = ENPIN;
|
|
||||||
GPIO_Config(RS485EN,GPIO_Mode_Out_PP);
|
|
||||||
GPIO_WritePin(RS485EN,LOW);
|
|
||||||
USART_Config(USARTx,Buand);
|
|
||||||
}
|
|
||||||
/*******************************************************************************
|
|
||||||
* @brief USART发送一个字符
|
|
||||||
* @param None
|
|
||||||
* @retval None
|
|
||||||
* @Note None
|
|
||||||
*******************************************************************************/
|
|
||||||
void USART_SendChar(USART_TypeDef *USARTx,char Data)
|
|
||||||
{
|
|
||||||
USART_SendData(USARTx,Data);
|
|
||||||
while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET);
|
|
||||||
}
|
|
||||||
/*******************************************************************************
|
|
||||||
* @brief 485发送一个字符
|
|
||||||
* @param None
|
|
||||||
* @retval None
|
|
||||||
* @Note None
|
|
||||||
*******************************************************************************/
|
|
||||||
void USART_485_SendChar(USART_TypeDef *USARTx,char Data)
|
|
||||||
{
|
|
||||||
GPIO_WritePin(RS485EN,HIGH);
|
|
||||||
USART_SendChar(USARTx,Data);
|
|
||||||
GPIO_WritePin(RS485EN,LOW);
|
|
||||||
}
|
|
||||||
/*******************************************************************************
|
|
||||||
* @brief USART发送字符串
|
|
||||||
* @param None
|
|
||||||
* @retval None
|
|
||||||
* @Note None
|
|
||||||
*******************************************************************************/
|
|
||||||
void USART_SendStr(USART_TypeDef *USARTx,char* senddata)
|
|
||||||
{
|
|
||||||
int lenth=strlen(senddata);
|
|
||||||
int i;
|
|
||||||
for (i=0; i<lenth+1; i++)
|
|
||||||
{
|
|
||||||
USART_SendData(USARTx,*senddata++);
|
|
||||||
while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/*******************************************************************************
|
|
||||||
* @brief 485发送字符串
|
|
||||||
* @param None
|
|
||||||
* @retval None
|
|
||||||
* @Note None
|
|
||||||
*******************************************************************************/
|
|
||||||
void USART_485_SendStr(USART_TypeDef *USARTx,char* senddata)
|
|
||||||
{
|
|
||||||
GPIO_WritePin(RS485EN,HIGH);
|
|
||||||
USART_SendStr(USARTx,senddata);
|
|
||||||
GPIO_WritePin(RS485EN,LOW);
|
|
||||||
}
|
|
||||||
|
|
||||||
//不使用半主机模式
|
|
||||||
#if 1 //如果没有这段,则需要在target选项中选择使用USE microLIB
|
|
||||||
#pragma import(__use_no_semihosting)
|
|
||||||
struct __FILE
|
|
||||||
{
|
|
||||||
int handle;
|
|
||||||
};
|
|
||||||
FILE __stdout;
|
|
||||||
|
|
||||||
void _sys_exit(int x)
|
|
||||||
{
|
|
||||||
x = x;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
PUTCHAR_PROTOTYPE
|
|
||||||
{
|
|
||||||
/* Place your implementation of fputc here */
|
|
||||||
/* e.g. write a character to the USART */
|
|
||||||
USART_SendData(Debug_USART,(u8)ch);
|
|
||||||
/* Loop until the end of transmission */
|
|
||||||
while (USART_GetFlagStatus(Debug_USART, USART_FLAG_TXE) == RESET);
|
|
||||||
|
|
||||||
return ch;
|
|
||||||
}
|
|
||||||
/*********************************END OF FILE**********************************/
|
|
104
firmware/src/Driver/adc.c
Normal file
104
firmware/src/Driver/adc.c
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* @file adc.c
|
||||||
|
* @author: MQjehovah mail:MQjehovah@hotmail.com
|
||||||
|
* @version 1.0.0
|
||||||
|
* @date 2020.10.23
|
||||||
|
* @brief
|
||||||
|
******************************************************************************
|
||||||
|
* @attention
|
||||||
|
*******************************************************************************/
|
||||||
|
/* Includes ------------------------------------------------------------------*/
|
||||||
|
#include "adc.h"
|
||||||
|
/* Definition ----------------------------------------------------------------*/
|
||||||
|
short int Cur_ADC;
|
||||||
|
short int Temp_ADC;
|
||||||
|
/* Functions -----------------------------------------------------------------*/
|
||||||
|
/*******************************************************************************
|
||||||
|
* @brief ADC初始化
|
||||||
|
* @param None
|
||||||
|
* @retval None
|
||||||
|
* @note None
|
||||||
|
*******************************************************************************/
|
||||||
|
void ADC_Config(void)
|
||||||
|
{
|
||||||
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
|
ADC_InitTypeDef ADC_InitStructure;
|
||||||
|
|
||||||
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
|
||||||
|
|
||||||
|
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
|
||||||
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
|
||||||
|
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||||
|
|
||||||
|
RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1, ENABLE); //ADC1复位,对于405|407,复位ADC1即复位全部ADC
|
||||||
|
RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1, DISABLE); //复位结束
|
||||||
|
|
||||||
|
RCC_ADCCLKConfig(RCC_PCLK2_Div6); //12M
|
||||||
|
|
||||||
|
ADC_InitStructure.ADC_Mode = ADC_Mode_InjecSimult;
|
||||||
|
ADC_InitStructure.ADC_ScanConvMode = ENABLE; //扫描模式
|
||||||
|
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //关闭连续转换
|
||||||
|
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigInjecConv_None; //暂时禁止触发检测,使用软件触发
|
||||||
|
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //右对齐
|
||||||
|
ADC_InitStructure.ADC_NbrOfChannel = 0; //0个转换在规则序列中
|
||||||
|
ADC_Init(ADC1, &ADC_InitStructure); //ADC初始化
|
||||||
|
|
||||||
|
ADC_InjectedSequencerLengthConfig(ADC1, 2); //3个转换在注入序列中
|
||||||
|
ADC_TempSensorVrefintCmd(ENABLE);
|
||||||
|
ADC_InjectedChannelConfig(ADC1, ADC_Channel_3, 1, ADC_SampleTime_1Cycles5); //
|
||||||
|
ADC_InjectedChannelConfig(ADC1, ADC_Channel_16, 2, ADC_SampleTime_239Cycles5); //
|
||||||
|
ADC_Cmd(ADC1, ENABLE);
|
||||||
|
|
||||||
|
ADCCalibration_BeforStart(); //将初始值偏置到0位,消除硬件差别
|
||||||
|
|
||||||
|
// ADC_ITConfig(ADC1, ADC_IT_JEOC, ENABLE);
|
||||||
|
// ADC_ITConfig(ADC2, ADC_IT_JEOC, ENABLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* @brief ADC中断
|
||||||
|
* @param None
|
||||||
|
* @retval None
|
||||||
|
* @note None
|
||||||
|
*******************************************************************************/
|
||||||
|
void ADC1_2_IRQHandler(void)
|
||||||
|
{
|
||||||
|
static u8 i = 0, x = 0, y = 0;
|
||||||
|
|
||||||
|
if (ADC1->SR & ADC_FLAG_JEOC)
|
||||||
|
{
|
||||||
|
// LED_GR = !LED_GR;
|
||||||
|
ADC1->SR &= ~(ADC_FLAG_JEOC);
|
||||||
|
Cur_ADC = (short int)ADC1->JDR1;
|
||||||
|
Temp_ADC = (short int)ADC1->JDR2;
|
||||||
|
TIM1->SR &= 0xFFEF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* @brief ADC初始化
|
||||||
|
* @param None
|
||||||
|
* @retval None
|
||||||
|
* @note None
|
||||||
|
*******************************************************************************/
|
||||||
|
void ADCCalibration_BeforStart(void)
|
||||||
|
{
|
||||||
|
ADC_ITConfig(ADC1, ADC_IT_JEOC, DISABLE);
|
||||||
|
|
||||||
|
ADC_ExternalTrigInjectedConvConfig(ADC1, ADC_ExternalTrigInjecConv_None);
|
||||||
|
ADC_SoftwareStartInjectedConvCmd(ADC1, ENABLE);
|
||||||
|
while (ADC_GetFlagStatus(ADC1, ADC_FLAG_JEOC) != SET)
|
||||||
|
;
|
||||||
|
ADC_ClearFlag(ADC1, ADC_FLAG_JEOC);
|
||||||
|
ADC1->JOFR1 = ADC1->JOFR1 + ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1);
|
||||||
|
if ((ADC1->JOFR1 < 1737) || (ADC1->JOFR1 > 2358))
|
||||||
|
{
|
||||||
|
//TODO: 采样异常,元器件损坏
|
||||||
|
}
|
||||||
|
|
||||||
|
ADC_ExternalTrigInjectedConvConfig(ADC1, ADC_ExternalTrigInjecConv_T1_CC4);
|
||||||
|
ADC_ITConfig(ADC1, ADC_IT_JEOC, ENABLE);
|
||||||
|
ADC_ExternalTrigInjectedConvCmd(ADC1, ENABLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*********************************END OF FILE**********************************/
|
139
firmware/src/Driver/can.c
Normal file
139
firmware/src/Driver/can.c
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* @file can.c
|
||||||
|
* @author: MQjehovah mail:MQjehovah@hotmail.com
|
||||||
|
* @version 1.0.0
|
||||||
|
* @date 2020.10.23
|
||||||
|
* @brief
|
||||||
|
******************************************************************************
|
||||||
|
* @attention
|
||||||
|
*******************************************************************************/
|
||||||
|
/* Includes ------------------------------------------------------------------*/
|
||||||
|
#include "adc.h"
|
||||||
|
/* Definition ----------------------------------------------------------------*/
|
||||||
|
extern short int Cur_ADC;
|
||||||
|
extern short int Temp_ADC;
|
||||||
|
/* Functions -----------------------------------------------------------------*/
|
||||||
|
/*******************************************************************************
|
||||||
|
* @brief CAN1初始化
|
||||||
|
* @param None
|
||||||
|
* @retval None
|
||||||
|
* @note None
|
||||||
|
*******************************************************************************/
|
||||||
|
void CAN1_Config(u16 bound)
|
||||||
|
{
|
||||||
|
u8 brp = 3000 / bound;
|
||||||
|
|
||||||
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
|
CAN_InitTypeDef CAN_InitStructure;
|
||||||
|
CAN_FilterInitTypeDef CAN_FilterInitStructure;
|
||||||
|
|
||||||
|
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
|
||||||
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
||||||
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||||
|
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||||
|
|
||||||
|
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
|
||||||
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
||||||
|
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||||
|
//CAN单元设置
|
||||||
|
CAN_InitStructure.CAN_TTCM = DISABLE; //ENABLE:时间触发通信模式 DISABLE:非时间触发通信模式
|
||||||
|
CAN_InitStructure.CAN_ABOM = ENABLE; //软件自动离线管理
|
||||||
|
CAN_InitStructure.CAN_AWUM = DISABLE; //ENABLE:监测到can消息退出休眠模式 DISABLE:清除CAN->MCR的SLEEP位退出休眠模式
|
||||||
|
CAN_InitStructure.CAN_NART = DISABLE; //ENABLE:无论发送成功与否只法一次 DISABLE:发送不成功一直重发
|
||||||
|
CAN_InitStructure.CAN_RFLM = DISABLE; //ENABLE:FIFO溢出后丢弃后面的报文 DISABLE:溢出后新的覆盖旧的
|
||||||
|
CAN_InitStructure.CAN_TXFP = ENABLE; //ENABLE:优先级由请求顺序决定 DISABLE:优先级由报文标识符决定
|
||||||
|
CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; //模式设置
|
||||||
|
CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; //重新同步跳跃宽度(Tsjw)为tsjw+1个时间单位 CAN_SJW_1tq~CAN_SJW_4tq
|
||||||
|
CAN_InitStructure.CAN_BS1 = CAN_BS1_6tq; //Tbs1范围CAN_BS1_1tq ~ CAN_BS1_16tq
|
||||||
|
CAN_InitStructure.CAN_BS2 = CAN_BS2_5tq; //Tbs2范围CAN_BS2_1tq ~ CAN_BS2_8tq
|
||||||
|
CAN_InitStructure.CAN_Prescaler = brp; //分频系数(Fdiv)为brp+1
|
||||||
|
CAN_Init(CAN1, &CAN_InitStructure); //初始化CAN1
|
||||||
|
|
||||||
|
//配置过滤器
|
||||||
|
CAN_FilterInitStructure.CAN_FilterNumber = 0; //过滤器0
|
||||||
|
CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask; //标识符屏蔽位模式
|
||||||
|
CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit; //过滤器位宽32位
|
||||||
|
CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000; //32位ID
|
||||||
|
CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000;
|
||||||
|
CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000; //32位MASK
|
||||||
|
CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000;
|
||||||
|
CAN_FilterInitStructure.CAN_FilterFIFOAssignment = CAN_Filter_FIFO0; //过滤器0关联到FIFO0
|
||||||
|
CAN_FilterInitStructure.CAN_FilterActivation = ENABLE; //激活过滤器0
|
||||||
|
CAN_FilterInit(&CAN_FilterInitStructure); //滤波器初始化
|
||||||
|
|
||||||
|
// Motor_Cmd(Addr_Left,DISABLE);
|
||||||
|
// Motor_Cmd(Addr_Right,DISABLE);
|
||||||
|
// delay_ms(20);//CAN命令包发送完成
|
||||||
|
CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE); //FIFO0消息挂号中断允许.
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* @brief CAN1中断
|
||||||
|
* @param None
|
||||||
|
* @retval None
|
||||||
|
* @note 速度模式s顺时针n逆时针 定位模式S顺时针N逆时针
|
||||||
|
*******************************************************************************/
|
||||||
|
CanRxMsg BLcanbuf;
|
||||||
|
FlagStatus BL_Deal_Flag = RESET;
|
||||||
|
void USB_LP_CAN1_RX0_IRQHandler(void)
|
||||||
|
{
|
||||||
|
CanRxMsg RxMessagebuf;
|
||||||
|
CAN_Receive(CAN1, CAN_FIFO0, &RxMessagebuf);
|
||||||
|
// CanRx_TimeOut_Cnt = 3000; //500ms
|
||||||
|
|
||||||
|
if (RxMessagebuf.StdId == 0x7df)
|
||||||
|
{
|
||||||
|
// if ((RxMessagebuf.Data[0] == 'S') || (RxMessagebuf.Data[0] == 'P') || (RxMessagebuf.Data[0] == 'X') || (RxMessagebuf.Data[0] == 'D'))
|
||||||
|
// {
|
||||||
|
// Com_No_T1 = RxMessagebuf.Data[7];
|
||||||
|
// if (Com_No_T1 != Com_No_OLD_T1)
|
||||||
|
// {
|
||||||
|
// if (RecDone_T1 == RESET)
|
||||||
|
// RecDone_T1 = SET;
|
||||||
|
// else
|
||||||
|
// return;
|
||||||
|
// memcpy(&uComRx_T1, RxMessagebuf.Data, 8);
|
||||||
|
// Com_No_OLD_T1 = Com_No_T1;
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// if (Say_Hello_T1 == 0)
|
||||||
|
// Say_Hello_T1 = 1;
|
||||||
|
// else
|
||||||
|
// return;
|
||||||
|
// uComTx_T1.mode = RxMessagebuf.Data[0];
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int CanTx_TimeOut_Cnt = 0;
|
||||||
|
/**********************************************************************
|
||||||
|
* Description : None
|
||||||
|
* Input : None
|
||||||
|
* Output : None
|
||||||
|
* Return : None
|
||||||
|
* Attention : None
|
||||||
|
**********************************************************************/
|
||||||
|
u8 can_send_message(u8 index, u32 id, u8 dlc, u8 *data)
|
||||||
|
{
|
||||||
|
u8 mbox;
|
||||||
|
CanTxMsg TxMessage;
|
||||||
|
TxMessage.StdId = id; // 标准标识符
|
||||||
|
TxMessage.ExtId = id; // 设置扩展标示符
|
||||||
|
TxMessage.IDE = 0; // 标准帧
|
||||||
|
TxMessage.RTR = 0; // 数据帧
|
||||||
|
TxMessage.DLC = dlc; // 要发送的数据长度
|
||||||
|
CanTx_TimeOut_Cnt = 50; //25ms
|
||||||
|
memcpy(TxMessage.Data, data, 8);
|
||||||
|
do
|
||||||
|
{
|
||||||
|
mbox = CAN_Transmit(CAN1, &TxMessage);
|
||||||
|
} while ((mbox == CAN_TxStatus_NoMailBox) && (CanTx_TimeOut_Cnt != 0));
|
||||||
|
|
||||||
|
while ((CAN_TransmitStatus(CAN1, mbox) != CAN_TxStatus_Ok) && (CanTx_TimeOut_Cnt != 0))
|
||||||
|
;
|
||||||
|
CanTx_TimeOut_Cnt = 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
/*********************************END OF FILE**********************************/
|
@ -1,70 +0,0 @@
|
|||||||
/*******************************************************************************
|
|
||||||
* @file GPIO.h
|
|
||||||
* @author: MQjehovah mail:MQjehovah@hotmail.com
|
|
||||||
* @version 1.0.1
|
|
||||||
* @date 2017.5.16
|
|
||||||
* @brief
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
*******************************************************************************/
|
|
||||||
#ifndef _GPIO_H
|
|
||||||
#define _GPIO_H
|
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
|
||||||
#include "stm32f10x_conf.h"
|
|
||||||
/* Definition ----------------------------------------------------------------*/
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
LOW,
|
|
||||||
HIGH,
|
|
||||||
}GPIO_STA;
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
GPIO_TypeDef * PORT;
|
|
||||||
uint16_t PIN;
|
|
||||||
}GPIO_DEV;
|
|
||||||
|
|
||||||
extern GPIO_DEV PA0;//PA0-WKUP/USART2_CTS/ADC_IN0/TIM2_CH1_ETR
|
|
||||||
extern GPIO_DEV PA1;//PA1/USART2_RTS/ADC_IN1/TIM2_CH2
|
|
||||||
extern GPIO_DEV PA2;//PA2/USART2_TX/ADC_IN2/TIM2_CH3
|
|
||||||
extern GPIO_DEV PA3;//PA3/USART2_RX/ADC_IN3/TIM2_CH4
|
|
||||||
extern GPIO_DEV PA4;//PA4/SPI1_NSS/USART2_CK/ADC_IN4
|
|
||||||
extern GPIO_DEV PA5;//PA5/SPI1_SCK/ADC_IN5
|
|
||||||
extern GPIO_DEV PA6;//PA6/SPI1_MISO/ADC_IN6/TIM3_CH1
|
|
||||||
extern GPIO_DEV PA7;//PA7/SPI1_MOSI/ADC_IN7/TIM3_CH2
|
|
||||||
extern GPIO_DEV PA8;//PA8/USART1_CK/TIM1_CH1/MCO
|
|
||||||
extern GPIO_DEV PA9;//PA9/USART1_TX/TIM1_CH2
|
|
||||||
extern GPIO_DEV PA10;//PA10/USART1_RX/TIM1_CH3
|
|
||||||
extern GPIO_DEV PA11;//PA11/USART1_CTS/CANRX/USBDM/TIM1_CH4
|
|
||||||
extern GPIO_DEV PA12;//PA12/USART1_RTS/CANTX/USBDP/TIM1_ETR
|
|
||||||
extern GPIO_DEV PA13;//PA13/JTMS/SWDIO
|
|
||||||
extern GPIO_DEV PA14;//PA14/JTCK/SWCLK
|
|
||||||
extern GPIO_DEV PA15;//PA15/JTDI
|
|
||||||
|
|
||||||
extern GPIO_DEV PB0;//PB0/ADC_IN8/TIM3_CH3
|
|
||||||
extern GPIO_DEV PB1;//PB1/ADC_IN9/TIM3_CH4
|
|
||||||
extern GPIO_DEV PB2;//PB2/BOOT1
|
|
||||||
extern GPIO_DEV PB3;//PB3/JTDO/TRACESWO
|
|
||||||
extern GPIO_DEV PB4;//PB4/JNTRST
|
|
||||||
extern GPIO_DEV PB5;//PB5/I2C1_SMBAl
|
|
||||||
extern GPIO_DEV PB6;//PB6/I2C1_SCL/ TIM4_CH1
|
|
||||||
extern GPIO_DEV PB7;//PB7/I2C1_SDA/ TIM4_CH2
|
|
||||||
extern GPIO_DEV PB8;//PB8/TIM4_CH3
|
|
||||||
extern GPIO_DEV PB9;//PB9/TIM4_CH4
|
|
||||||
extern GPIO_DEV PB10;//PB10/I2C2_SCL/USART3_TX
|
|
||||||
extern GPIO_DEV PB11;//PB11/I2C2_SDA/USART3_RX
|
|
||||||
extern GPIO_DEV PB12;//PB12/SPI2_NSS/I2C2_SMBAl/USART3_CK/TIM1_BKIN
|
|
||||||
extern GPIO_DEV PB13;//PB13/SPI2_SCK/USART3_CTS/TIM1_CH1N
|
|
||||||
extern GPIO_DEV PB14;//PB14/SPI2_MISO/USART3_RTS/TIM1_CH2N
|
|
||||||
extern GPIO_DEV PB15;//PB15/SPI2_MOSITIM1_CH3N
|
|
||||||
|
|
||||||
extern GPIO_DEV PC13;//
|
|
||||||
extern GPIO_DEV PC14;//
|
|
||||||
/* Exported Functions --------------------------------------------------------*/
|
|
||||||
void GPIO_Config(GPIO_DEV *dev,GPIOMode_TypeDef mode);
|
|
||||||
void GPIO_WritePin(GPIO_DEV *dev,GPIO_STA state);
|
|
||||||
GPIO_STA GPIO_ReadPin(GPIO_DEV *dev);
|
|
||||||
#endif
|
|
||||||
/*********************************END OF FILE**********************************/
|
|
@ -1,28 +1,20 @@
|
|||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* @file USART.h
|
* @file adc.h
|
||||||
* @author: MQjehovah mail:MQjehovah@hotmail.com
|
* @author: MQjehovah mail:MQjehovah@hotmail.com
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
* @date 2016.3.18
|
* @date 2020.0.23
|
||||||
* @brief
|
* @brief
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
#ifndef _USART_DRIVER_H
|
#ifndef __ADC_H
|
||||||
#define _USART_DRIVER_H
|
#define __ADC_H
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
#include "stm32f10x_conf.h"
|
#include "stm32f10x_conf.h"
|
||||||
#include "GPIO.h"
|
|
||||||
#include<string.h>
|
|
||||||
#include<stdio.h>
|
|
||||||
/* Definition ----------------------------------------------------------------*/
|
/* Definition ----------------------------------------------------------------*/
|
||||||
|
|
||||||
/* Exported Functions --------------------------------------------------------*/
|
/* Exported Functions --------------------------------------------------------*/
|
||||||
void USART_GPIO_Config(USART_TypeDef *USARTx);
|
void ADCCalibration_BeforStart(void);
|
||||||
void USART_Config(USART_TypeDef *USARTx,u16 Buand);
|
|
||||||
void USART_485_Config(USART_TypeDef *USARTx,u16 Buand,GPIO_DEV *ENPIN);
|
|
||||||
void USART_SendChar(USART_TypeDef *USARTx,char Data);
|
|
||||||
void USART_485_SendChar(USART_TypeDef *USARTx,char Data);
|
|
||||||
void USART_SendStr(USART_TypeDef *USARTx,char* senddata);
|
|
||||||
void USART_485_SendStr(USART_TypeDef *USARTx,char* senddata);
|
|
||||||
/*********************************END OF FILE**********************************/
|
|
||||||
#endif
|
#endif
|
||||||
|
/*********************************END OF FILE**********************************/
|
21
firmware/src/Driver/inc/can.h
Normal file
21
firmware/src/Driver/inc/can.h
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* @file can.h
|
||||||
|
* @author: MQjehovah mail:MQjehovah@hotmail.com
|
||||||
|
* @version 1.0.0
|
||||||
|
* @date 2020.0.23
|
||||||
|
* @brief
|
||||||
|
******************************************************************************
|
||||||
|
* @attention
|
||||||
|
*******************************************************************************/
|
||||||
|
#ifndef __CAN_H
|
||||||
|
#define __CAN_H
|
||||||
|
/* Includes ------------------------------------------------------------------*/
|
||||||
|
#include "stm32f10x_conf.h"
|
||||||
|
/* Definition ----------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* Exported Functions --------------------------------------------------------*/
|
||||||
|
void CAN1_Config(u16 bound);
|
||||||
|
u8 can_send_message(u8 index, u32 id, u8 dlc, u8 *data);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
/*********************************END OF FILE**********************************/
|
22
firmware/src/Driver/inc/led.h
Normal file
22
firmware/src/Driver/inc/led.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* @file led.h
|
||||||
|
* @author: MQjehovah mail:MQjehovah@hotmail.com
|
||||||
|
* @version 1.0.0
|
||||||
|
* @date 2020.0.23
|
||||||
|
* @brief
|
||||||
|
******************************************************************************
|
||||||
|
* @attention
|
||||||
|
*******************************************************************************/
|
||||||
|
#ifndef __LED_H
|
||||||
|
#define __LED_H
|
||||||
|
/* Includes ------------------------------------------------------------------*/
|
||||||
|
#include "stm32f10x_conf.h"
|
||||||
|
/* Definition ----------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* Exported Functions --------------------------------------------------------*/
|
||||||
|
void LED_Config();
|
||||||
|
void LED_ON(uint8_t index);
|
||||||
|
void LED_OFF(uint8_t index);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
/*********************************END OF FILE**********************************/
|
@ -12,6 +12,13 @@
|
|||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
#include "stm32f10x_conf.h"
|
#include "stm32f10x_conf.h"
|
||||||
/* Definition ----------------------------------------------------------------*/
|
/* Definition ----------------------------------------------------------------*/
|
||||||
|
enum motor_mode
|
||||||
|
{
|
||||||
|
MOTOR_MODE_SPEED, //速度模式
|
||||||
|
MOTOR_MODE_POSITION, //位置模式
|
||||||
|
MOTOR_MODE_TORQUE, //转矩模式
|
||||||
|
};
|
||||||
|
|
||||||
enum motor_dir
|
enum motor_dir
|
||||||
{
|
{
|
||||||
MOTOR_DIR_CW, //正向
|
MOTOR_DIR_CW, //正向
|
||||||
@ -25,6 +32,7 @@ enum motor_state
|
|||||||
|
|
||||||
typedef struct _motor
|
typedef struct _motor
|
||||||
{
|
{
|
||||||
|
u8 mode; //电机控制模式
|
||||||
u8 dir;
|
u8 dir;
|
||||||
u8 state; //运行状态
|
u8 state; //运行状态
|
||||||
u8 hall_position; //霍尔位置
|
u8 hall_position; //霍尔位置
|
||||||
|
69
firmware/src/Driver/led.c
Normal file
69
firmware/src/Driver/led.c
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
/*******************************************************************************
|
||||||
|
* @file led.c
|
||||||
|
* @author: MQjehovah mail:MQjehovah@hotmail.com
|
||||||
|
* @version 1.0.0
|
||||||
|
* @date 2020.10.23
|
||||||
|
* @brief
|
||||||
|
******************************************************************************
|
||||||
|
* @attention
|
||||||
|
*******************************************************************************/
|
||||||
|
/* Includes ------------------------------------------------------------------*/
|
||||||
|
#include "led.h"
|
||||||
|
/* Definition ----------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* Functions -----------------------------------------------------------------*/
|
||||||
|
/*******************************************************************************
|
||||||
|
* @brief LED初始化
|
||||||
|
* @param None
|
||||||
|
* @retval None
|
||||||
|
* @note None
|
||||||
|
*******************************************************************************/
|
||||||
|
void LED_Config()
|
||||||
|
{
|
||||||
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
|
||||||
|
|
||||||
|
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6;
|
||||||
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
|
||||||
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||||
|
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* @brief 打开LED
|
||||||
|
* @param None
|
||||||
|
* @retval None
|
||||||
|
* @note None
|
||||||
|
*******************************************************************************/
|
||||||
|
void LED_ON(uint8_t index)
|
||||||
|
{
|
||||||
|
if (index == 0)
|
||||||
|
{
|
||||||
|
GPIO_WriteBit(GPIOB, GPIO_Pin_5, SET);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (index == 1)
|
||||||
|
{
|
||||||
|
GPIO_WriteBit(GPIOB, GPIO_Pin_6, SET);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* @brief 关闭LED
|
||||||
|
* @param None
|
||||||
|
* @retval None
|
||||||
|
* @note None
|
||||||
|
*******************************************************************************/
|
||||||
|
void LED_OFF(uint8_t index)
|
||||||
|
{
|
||||||
|
if (index == 0)
|
||||||
|
{
|
||||||
|
GPIO_WriteBit(GPIOB, GPIO_Pin_5, RESET);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (index == 1)
|
||||||
|
{
|
||||||
|
GPIO_WriteBit(GPIOB, GPIO_Pin_6, RESET);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*********************************END OF FILE**********************************/
|
@ -9,7 +9,6 @@
|
|||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
#include "motor.h"
|
#include "motor.h"
|
||||||
#include "GPIO.h"
|
|
||||||
/* Definition ----------------------------------------------------------------*/
|
/* Definition ----------------------------------------------------------------*/
|
||||||
motor_t motor_info;
|
motor_t motor_info;
|
||||||
/* Functions -----------------------------------------------------------------*/
|
/* Functions -----------------------------------------------------------------*/
|
||||||
@ -139,11 +138,8 @@ void motor_step(void)
|
|||||||
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Enable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Enable);
|
||||||
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// GPIO_WritePin(&PB5, HIGH);
|
motor_stop();
|
||||||
GPIO_WritePin(&PB5, LOW);
|
|
||||||
//motor_stop();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
TIM_GenerateEvent(TIM1, TIM_EventSource_COM);
|
TIM_GenerateEvent(TIM1, TIM_EventSource_COM);
|
||||||
|
@ -12,8 +12,7 @@
|
|||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
#include "stm32f10x_conf.h"
|
#include "stm32f10x_conf.h"
|
||||||
#include "delay.h"
|
#include "delay.h"
|
||||||
#include "USART.h"
|
#include "led.h"
|
||||||
#include "GPIO.h"
|
|
||||||
#include "hall.h"
|
#include "hall.h"
|
||||||
#include "pwm.h"
|
#include "pwm.h"
|
||||||
#include "motor.h"
|
#include "motor.h"
|
||||||
|
@ -25,6 +25,35 @@ void RCC_Config()
|
|||||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_TIM1, ENABLE);
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_TIM1, ENABLE);
|
||||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 | RCC_APB1Periph_TIM3 | RCC_APB1Periph_TIM4, ENABLE);
|
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 | RCC_APB1Periph_TIM3 | RCC_APB1Periph_TIM4, ENABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* @brief 加减速测试
|
||||||
|
* @param None
|
||||||
|
* @retval None
|
||||||
|
* @Note None
|
||||||
|
*******************************************************************************/
|
||||||
|
void test(void)
|
||||||
|
{
|
||||||
|
motor_init();
|
||||||
|
motor_start();
|
||||||
|
delay_ms(5000);
|
||||||
|
motor_set_speed(100);
|
||||||
|
delay_ms(5000);
|
||||||
|
motor_set_speed(300);
|
||||||
|
delay_ms(5000);
|
||||||
|
motor_set_speed(500);
|
||||||
|
delay_ms(5000);
|
||||||
|
motor_set_speed(700);
|
||||||
|
motor_info.dir = MOTOR_DIR_CW;
|
||||||
|
delay_ms(5000);
|
||||||
|
motor_set_speed(900);
|
||||||
|
delay_ms(5000);
|
||||||
|
motor_set_speed(1200);
|
||||||
|
delay_ms(5000);
|
||||||
|
motor_set_speed(1400);
|
||||||
|
delay_ms(5000);
|
||||||
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* @brief 中断优先级配置
|
* @brief 中断优先级配置
|
||||||
* @param None
|
* @param None
|
||||||
@ -42,6 +71,7 @@ void NVIC_Config(void) //配置中断优先级
|
|||||||
// NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
// NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||||||
// NVIC_Init(&NVIC_InitStructure);
|
// NVIC_Init(&NVIC_InitStructure);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* @brief 主函数
|
* @brief 主函数
|
||||||
* @param None
|
* @param None
|
||||||
@ -54,35 +84,17 @@ int main(void)
|
|||||||
NVIC_Config();
|
NVIC_Config();
|
||||||
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //关闭jtag,保留swd。
|
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //关闭jtag,保留swd。
|
||||||
SysTick_init();
|
SysTick_init();
|
||||||
GPIO_Config(&PB5, GPIO_Mode_Out_PP);
|
|
||||||
|
|
||||||
// USART_Config(USART1, 9600);
|
|
||||||
HALL_Config();
|
HALL_Config();
|
||||||
PWM_Config();
|
PWM_Config();
|
||||||
motor_init();
|
CAN1_Config();
|
||||||
motor_start();
|
test();
|
||||||
delay_ms(5000);
|
|
||||||
motor_set_speed(100);
|
|
||||||
delay_ms(5000);
|
|
||||||
motor_set_speed(300);
|
|
||||||
delay_ms(5000);
|
|
||||||
motor_set_speed(500);
|
|
||||||
delay_ms(5000);
|
|
||||||
motor_set_speed(700);
|
|
||||||
motor_info.dir=MOTOR_DIR_CW;
|
|
||||||
delay_ms(5000);
|
|
||||||
motor_set_speed(900);
|
|
||||||
delay_ms(5000);
|
|
||||||
motor_set_speed(1200);
|
|
||||||
delay_ms(5000);
|
|
||||||
motor_set_speed(1400);
|
|
||||||
delay_ms(5000);
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
GPIO_WritePin(&PB5, HIGH);
|
LED_ON(1);
|
||||||
delay_ms(500);
|
delay_ms(500);
|
||||||
GPIO_WritePin(&PB5, LOW);
|
LED_OFF(1);
|
||||||
delay_ms(500);
|
delay_ms(500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************END OF FILE**********************************/
|
/*********************************END OF FILE**********************************/
|
||||||
|
Loading…
Reference in New Issue
Block a user