diff --git a/firmware/build/MDK/project.uvprojx b/firmware/build/MDK/project.uvprojx
index 209149c..a9fea35 100644
--- a/firmware/build/MDK/project.uvprojx
+++ b/firmware/build/MDK/project.uvprojx
@@ -403,16 +403,6 @@
Driver
-
- GPIO.c
- 1
- ..\..\src\Driver\GPIO.c
-
-
- USART.c
- 1
- ..\..\src\Driver\USART.c
-
hall.c
1
@@ -428,6 +418,21 @@
1
..\..\src\Driver\motor.c
+
+ adc.c
+ 1
+ ..\..\src\Driver\adc.c
+
+
+ can.c
+ 1
+ ..\..\src\Driver\can.c
+
+
+ led.c
+ 1
+ ..\..\src\Driver\led.c
+
diff --git a/firmware/src/Driver/GPIO.c b/firmware/src/Driver/GPIO.c
deleted file mode 100644
index fb38040..0000000
--- a/firmware/src/Driver/GPIO.c
+++ /dev/null
@@ -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**********************************/
diff --git a/firmware/src/Driver/USART.c b/firmware/src/Driver/USART.c
deleted file mode 100644
index ccefe18..0000000
--- a/firmware/src/Driver/USART.c
+++ /dev/null
@@ -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; iSR & 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**********************************/
diff --git a/firmware/src/Driver/can.c b/firmware/src/Driver/can.c
new file mode 100644
index 0000000..b4701b3
--- /dev/null
+++ b/firmware/src/Driver/can.c
@@ -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**********************************/
diff --git a/firmware/src/Driver/inc/GPIO.h b/firmware/src/Driver/inc/GPIO.h
deleted file mode 100644
index 78eb2cd..0000000
--- a/firmware/src/Driver/inc/GPIO.h
+++ /dev/null
@@ -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**********************************/
diff --git a/firmware/src/Driver/inc/USART.h b/firmware/src/Driver/inc/adc.h
similarity index 56%
rename from firmware/src/Driver/inc/USART.h
rename to firmware/src/Driver/inc/adc.h
index 9826c79..cf0dc3c 100644
--- a/firmware/src/Driver/inc/USART.h
+++ b/firmware/src/Driver/inc/adc.h
@@ -1,28 +1,20 @@
/*******************************************************************************
- * @file USART.h
+ * @file adc.h
* @author: MQjehovah mail:MQjehovah@hotmail.com
* @version 1.0.0
- * @date 2016.3.18
+ * @date 2020.0.23
* @brief
******************************************************************************
* @attention
*******************************************************************************/
-#ifndef _USART_DRIVER_H
-#define _USART_DRIVER_H
+#ifndef __ADC_H
+#define __ADC_H
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x_conf.h"
-#include "GPIO.h"
- #include
- #include
/* Definition ----------------------------------------------------------------*/
/* Exported Functions --------------------------------------------------------*/
-void USART_GPIO_Config(USART_TypeDef *USARTx);
-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**********************************/
+void ADCCalibration_BeforStart(void);
+
#endif
+/*********************************END OF FILE**********************************/
diff --git a/firmware/src/Driver/inc/can.h b/firmware/src/Driver/inc/can.h
new file mode 100644
index 0000000..95c0ad5
--- /dev/null
+++ b/firmware/src/Driver/inc/can.h
@@ -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**********************************/
diff --git a/firmware/src/Driver/inc/led.h b/firmware/src/Driver/inc/led.h
new file mode 100644
index 0000000..533216b
--- /dev/null
+++ b/firmware/src/Driver/inc/led.h
@@ -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**********************************/
diff --git a/firmware/src/Driver/inc/motor.h b/firmware/src/Driver/inc/motor.h
index 47ac929..1520f62 100644
--- a/firmware/src/Driver/inc/motor.h
+++ b/firmware/src/Driver/inc/motor.h
@@ -12,6 +12,13 @@
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x_conf.h"
/* Definition ----------------------------------------------------------------*/
+enum motor_mode
+{
+ MOTOR_MODE_SPEED, //速度模式
+ MOTOR_MODE_POSITION, //位置模式
+ MOTOR_MODE_TORQUE, //转矩模式
+};
+
enum motor_dir
{
MOTOR_DIR_CW, //正向
@@ -25,6 +32,7 @@ enum motor_state
typedef struct _motor
{
+ u8 mode; //电机控制模式
u8 dir;
u8 state; //运行状态
u8 hall_position; //霍尔位置
diff --git a/firmware/src/Driver/led.c b/firmware/src/Driver/led.c
new file mode 100644
index 0000000..98851fb
--- /dev/null
+++ b/firmware/src/Driver/led.c
@@ -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**********************************/
diff --git a/firmware/src/Driver/motor.c b/firmware/src/Driver/motor.c
index f5fd67c..f247080 100644
--- a/firmware/src/Driver/motor.c
+++ b/firmware/src/Driver/motor.c
@@ -9,7 +9,6 @@
*******************************************************************************/
/* Includes ------------------------------------------------------------------*/
#include "motor.h"
-#include "GPIO.h"
/* Definition ----------------------------------------------------------------*/
motor_t motor_info;
/* Functions -----------------------------------------------------------------*/
@@ -139,11 +138,8 @@ void motor_step(void)
TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Enable);
TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
break;
-
default:
- // GPIO_WritePin(&PB5, HIGH);
- GPIO_WritePin(&PB5, LOW);
- //motor_stop();
+ motor_stop();
break;
}
TIM_GenerateEvent(TIM1, TIM_EventSource_COM);
diff --git a/firmware/src/User/inc/main.h b/firmware/src/User/inc/main.h
index f9cdc2d..88a0e5a 100644
--- a/firmware/src/User/inc/main.h
+++ b/firmware/src/User/inc/main.h
@@ -12,8 +12,7 @@
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x_conf.h"
#include "delay.h"
-#include "USART.h"
-#include "GPIO.h"
+#include "led.h"
#include "hall.h"
#include "pwm.h"
#include "motor.h"
diff --git a/firmware/src/User/main.c b/firmware/src/User/main.c
index 4a6a6d7..9960bc9 100644
--- a/firmware/src/User/main.c
+++ b/firmware/src/User/main.c
@@ -25,6 +25,35 @@ void RCC_Config()
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_TIM1, 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 中断优先级配置
* @param None
@@ -42,6 +71,7 @@ void NVIC_Config(void) //配置中断优先级
// NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
// NVIC_Init(&NVIC_InitStructure);
}
+
/*******************************************************************************
* @brief 主函数
* @param None
@@ -54,35 +84,17 @@ int main(void)
NVIC_Config();
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //关闭jtag,保留swd。
SysTick_init();
- GPIO_Config(&PB5, GPIO_Mode_Out_PP);
-
- // USART_Config(USART1, 9600);
HALL_Config();
PWM_Config();
- 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);
+ CAN1_Config();
+ test();
while (1)
{
- GPIO_WritePin(&PB5, HIGH);
+ LED_ON(1);
delay_ms(500);
- GPIO_WritePin(&PB5, LOW);
+ LED_OFF(1);
delay_ms(500);
}
}
+
/*********************************END OF FILE**********************************/