From 219825d62950ced50dd1eb89e9b4ef0e87afebce Mon Sep 17 00:00:00 2001 From: sbuer1 <1162521578@qq.com> Date: Mon, 24 Apr 2023 16:40:41 +0800 Subject: [PATCH 1/7] Redundant assignment of 'tmp' to itself. --- bsp/CME_M7/StdPeriph_Driver/src/cmem7_can.c | 1 - 1 file changed, 1 deletion(-) diff --git a/bsp/CME_M7/StdPeriph_Driver/src/cmem7_can.c b/bsp/CME_M7/StdPeriph_Driver/src/cmem7_can.c index d631e79c0d..bc261bf163 100644 --- a/bsp/CME_M7/StdPeriph_Driver/src/cmem7_can.c +++ b/bsp/CME_M7/StdPeriph_Driver/src/cmem7_can.c @@ -185,7 +185,6 @@ BOOL CAN_Init(CAN0_Type* CANx, CAN_InitTypeDef* Init, uint8_t tmp; CANx->INT_EN &= ~CAN_INT_All; tmp = CANx->INT; - tmp = tmp; } CANx->MODE_b.LOM = (Init->CAN_TxEn) ? FALSE : TRUE; -- Gitee From 75b3ef4558777a6965f64d5e59046200f59424a0 Mon Sep 17 00:00:00 2001 From: sbuer1 <1162521578@qq.com> Date: Mon, 24 Apr 2023 16:47:46 +0800 Subject: [PATCH 2/7] 1 --- bsp/CME_M7/StdPeriph_Driver/src/cmem7_i2c.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/bsp/CME_M7/StdPeriph_Driver/src/cmem7_i2c.c b/bsp/CME_M7/StdPeriph_Driver/src/cmem7_i2c.c index 8d60b9ffe4..e79df84a97 100644 --- a/bsp/CME_M7/StdPeriph_Driver/src/cmem7_i2c.c +++ b/bsp/CME_M7/StdPeriph_Driver/src/cmem7_i2c.c @@ -45,10 +45,15 @@ static uint32_t i2c_GetClock(I2C0_Type* I2Cx) { uint32_t dividor; assert_param(IS_I2C_ALL_PERIPH(I2Cx)); - if ((uint32_t)I2Cx == (uint32_t)I2C0) { - dividor = GLOBAL_CTRL->CLK_SEL_0_b.I2C0_CLK; - } else if ((uint32_t)I2Cx == (uint32_t)I2C1) { - dividor = GLOBAL_CTRL->CLK_SEL_0_b.I2C1_CLK; + switch (I2Cx) { + case I2C0: + dividor = GLOBAL_CTRL->CLK_SEL_0_b.I2C0_CLK; + break; + case I2C1: + dividor = GLOBAL_CTRL->CLK_SEL_0_b.I2C1_CLK; + break; + default: + return 0; // invalid parameter } return SYSTEM_CLOCK_FREQ / (1 << (dividor + 1)); -- Gitee From 263c6fe588ad4e717ad8bf1187089f58da79f87f Mon Sep 17 00:00:00 2001 From: sbuer1 <1162521578@qq.com> Date: Mon, 24 Apr 2023 17:11:46 +0800 Subject: [PATCH 3/7] 1 --- y | 38 ++++++++++++++++++++++++++++++++++++++ y.pub | 1 + 2 files changed, 39 insertions(+) create mode 100644 y create mode 100644 y.pub diff --git a/y b/y new file mode 100644 index 0000000000..f861c7a5ab --- /dev/null +++ b/y @@ -0,0 +1,38 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +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 +-----END OPENSSH PRIVATE KEY----- diff --git a/y.pub b/y.pub new file mode 100644 index 0000000000..edab43e8ad --- /dev/null +++ b/y.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDLuyGN5AJaazKUaKABOJaesgGi2MGJ/y/xoJlVsts12k/U1PvltaKch7WKHTpNIjKwrQhnsDhDmFcvAKHwDheKE/5sDELgHRiU2ktP9VLX72H95+jKqckQ6Ha/2GsEZzLDUPiYdZ4luw0w1uIVpvujdlHqykfpEgndwskLGFnUXRhHPta3gZDbWXQUAlZUJsJpEJHPA+dIb/lI3+psqwfMussqGYgTVM/gFNZwObcnZS537hiFMXmYhWofl6TJM66cEP+s/2pSjGQA4NLzGz/MJQ/bCB4eYQox/yVLMn8nTwAbPHyNRGv7BgZuc12F6wu9/g7nGM0J3pQexCM0pWVlt8KwoN22ryn1rXEEaV6jDOfonAx5f7NGDWLc2xeFcMi4EwibVsPbX7eGVGEc32aNGDflXx+jdVYmKVq9YofvTJePXxsgk1AtQRvEIgRIYT0pSncDGW+lqk3aGfxAiz7azpccIe+Fl+0uHw4npUWCoJ9QdCILFc+bbN+FEKrFW2E= m202071394@hust.edu.cn -- Gitee From 7aaac61428454f867ef3076495806d69aeb201c2 Mon Sep 17 00:00:00 2001 From: sbuer1 <1162521578@qq.com> Date: Tue, 25 Apr 2023 08:57:35 +0800 Subject: [PATCH 4/7] Revert "1" This reverts commit 263c6fe588ad4e717ad8bf1187089f58da79f87f. --- y | 38 -------------------------------------- y.pub | 1 - 2 files changed, 39 deletions(-) delete mode 100644 y delete mode 100644 y.pub diff --git a/y b/y deleted file mode 100644 index f861c7a5ab..0000000000 --- a/y +++ /dev/null @@ -1,38 +0,0 @@ ------BEGIN OPENSSH PRIVATE KEY----- -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 ------END OPENSSH PRIVATE KEY----- diff --git a/y.pub b/y.pub deleted file mode 100644 index edab43e8ad..0000000000 --- a/y.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDLuyGN5AJaazKUaKABOJaesgGi2MGJ/y/xoJlVsts12k/U1PvltaKch7WKHTpNIjKwrQhnsDhDmFcvAKHwDheKE/5sDELgHRiU2ktP9VLX72H95+jKqckQ6Ha/2GsEZzLDUPiYdZ4luw0w1uIVpvujdlHqykfpEgndwskLGFnUXRhHPta3gZDbWXQUAlZUJsJpEJHPA+dIb/lI3+psqwfMussqGYgTVM/gFNZwObcnZS537hiFMXmYhWofl6TJM66cEP+s/2pSjGQA4NLzGz/MJQ/bCB4eYQox/yVLMn8nTwAbPHyNRGv7BgZuc12F6wu9/g7nGM0J3pQexCM0pWVlt8KwoN22ryn1rXEEaV6jDOfonAx5f7NGDWLc2xeFcMi4EwibVsPbX7eGVGEc32aNGDflXx+jdVYmKVq9YofvTJePXxsgk1AtQRvEIgRIYT0pSncDGW+lqk3aGfxAiz7azpccIe+Fl+0uHw4npUWCoJ9QdCILFc+bbN+FEKrFW2E= m202071394@hust.edu.cn -- Gitee From 0c51172a089c4863f85726aedb0b2e896dc41c13 Mon Sep 17 00:00:00 2001 From: sbuer1 <1162521578@qq.com> Date: Tue, 25 Apr 2023 09:00:50 +0800 Subject: [PATCH 5/7] 33 --- bsp/CME_M7/StdPeriph_Driver/src/cmem7_i2c.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsp/CME_M7/StdPeriph_Driver/src/cmem7_i2c.c b/bsp/CME_M7/StdPeriph_Driver/src/cmem7_i2c.c index e79df84a97..87ca00d372 100644 --- a/bsp/CME_M7/StdPeriph_Driver/src/cmem7_i2c.c +++ b/bsp/CME_M7/StdPeriph_Driver/src/cmem7_i2c.c @@ -53,7 +53,7 @@ static uint32_t i2c_GetClock(I2C0_Type* I2Cx) { dividor = GLOBAL_CTRL->CLK_SEL_0_b.I2C1_CLK; break; default: - return 0; // invalid parameter + dividor = 0; // invalid parameter } return SYSTEM_CLOCK_FREQ / (1 << (dividor + 1)); -- Gitee From a77016a2c2108abf7ea89d0aca14e77cf810bb74 Mon Sep 17 00:00:00 2001 From: sbuer1 <1162521578@qq.com> Date: Tue, 25 Apr 2023 09:18:37 +0800 Subject: [PATCH 6/7] 33 --- bsp/CME_M7/StdPeriph_Driver/src/cmem7_can.c | 1 + bsp/CME_M7/StdPeriph_Driver/src/cmem7_i2c.c | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/bsp/CME_M7/StdPeriph_Driver/src/cmem7_can.c b/bsp/CME_M7/StdPeriph_Driver/src/cmem7_can.c index bc261bf163..e952057133 100644 --- a/bsp/CME_M7/StdPeriph_Driver/src/cmem7_can.c +++ b/bsp/CME_M7/StdPeriph_Driver/src/cmem7_can.c @@ -185,6 +185,7 @@ BOOL CAN_Init(CAN0_Type* CANx, CAN_InitTypeDef* Init, uint8_t tmp; CANx->INT_EN &= ~CAN_INT_All; tmp = CANx->INT; + temp = temp; } CANx->MODE_b.LOM = (Init->CAN_TxEn) ? FALSE : TRUE; diff --git a/bsp/CME_M7/StdPeriph_Driver/src/cmem7_i2c.c b/bsp/CME_M7/StdPeriph_Driver/src/cmem7_i2c.c index 87ca00d372..37d9da81a1 100644 --- a/bsp/CME_M7/StdPeriph_Driver/src/cmem7_i2c.c +++ b/bsp/CME_M7/StdPeriph_Driver/src/cmem7_i2c.c @@ -45,11 +45,11 @@ static uint32_t i2c_GetClock(I2C0_Type* I2Cx) { uint32_t dividor; assert_param(IS_I2C_ALL_PERIPH(I2Cx)); - switch (I2Cx) { - case I2C0: + switch ((uint32_t)I2Cx) { + case (uint32_t)I2C0: dividor = GLOBAL_CTRL->CLK_SEL_0_b.I2C0_CLK; break; - case I2C1: + case (uint32_t)I2C1: dividor = GLOBAL_CTRL->CLK_SEL_0_b.I2C1_CLK; break; default: -- Gitee From 62a1c3ae14993c090c864026b7be341249969fba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=B7=BC?= Date: Tue, 25 Apr 2023 01:22:11 +0000 Subject: [PATCH 7/7] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20bsp/?= =?UTF-8?q?CME=5FM7/StdPeriph=5FDriver/src/cmem7=5Fcan.c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/CME_M7/StdPeriph_Driver/src/cmem7_can.c | 386 -------------------- 1 file changed, 386 deletions(-) delete mode 100644 bsp/CME_M7/StdPeriph_Driver/src/cmem7_can.c diff --git a/bsp/CME_M7/StdPeriph_Driver/src/cmem7_can.c b/bsp/CME_M7/StdPeriph_Driver/src/cmem7_can.c deleted file mode 100644 index e952057133..0000000000 --- a/bsp/CME_M7/StdPeriph_Driver/src/cmem7_can.c +++ /dev/null @@ -1,386 +0,0 @@ -/** - ***************************************************************************** - * @file cmem7_can.c - * - * @brief CMEM7 CAN source file - * - * - * @version V1.0 - * @date 3. September 2013 - * - * @note - * - ***************************************************************************** - * @attention - * - * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS - * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE - * TIME. AS A RESULT, CAPITAL-MICRO SHALL NOT BE HELD LIABLE FOR ANY DIRECT, - * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING - * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE - * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. - * - *

© COPYRIGHT 2013 Capital-micro

- ***************************************************************************** - */ - -#include "cmem7_can.h" - -typedef struct { - union { - __IO uint8_t FI; /*!< Transmit Frame Information if writting or Receive Frame Information - if reading, ACR[0] if reset mode */ - - struct { - __IO uint8_t DLC : 4; /*!< byte number in the data */ - uint8_t : 2; - __IO uint8_t RTR : 1; /*!< 1 indicates a remote frame; 0 indicates a data frame */ - __IO uint8_t FF : 1; /*!< 1 selects Extended Frame Format (EFF); 0 selects Standard Frame - Format (SFF) */ - } FI_b; /*!< BitSize */ - } U; -} CAN_FRAME_INFO; - -typedef struct { - union { - uint16_t ID; /*!< ID */ - - struct { - uint16_t ID28_21 : 8; /*!< ID28 to ID21 */ - uint16_t : 4; - uint16_t RTR : 1; /*!< if remote frame */ - uint16_t ID20_18 : 3; /*!< ID20 to ID18 */ - } ID_b; /*!< BitSize */ - } U; -} CAN_STANDARD_ID; - -typedef struct { - union { - uint32_t ID; /*!< ID */ - - struct { - uint32_t ID28_21 : 8; /*!< ID28 to ID21 */ - uint32_t ID20_13 : 8; /*!< ID20 to ID13 */ - uint32_t ID12_5 : 8; /*!< ID12 to ID5 */ - uint32_t : 2; - uint32_t RTR : 1; /*!< if remote frame */ - uint32_t ID4_0 : 5; /*!< ID4 to ID0 */ - } ID_b; /*!< BitSize */ - } U; -} CAN_EXTENDED_ID; - -#define CAN_MODE_NORMAL 0x00000000 -#define CAN_MODE_RESET 0x00000001 -#define CAN_MODE_LISTEN_ONLY 0x00000002 -#define CAN_MODE_SELF_TEST 0x00000004 -#define CAN_MODE_SINGLE_FILTER 0x00000008 -#define CAN_MODE_SLEEP 0x00000010 - -#define CAN_OCR_NORMAL 0x02 -#define CAN_OCR_CLOCK 0x03 - -static BOOL can_SetFilter(CAN0_Type* CANx, CAN_FILTER *f1, CAN_FILTER *f2) { - if (!f1) { - return FALSE; - } - - if (!IS_CAN_FLT_TYPE(f1->type)) { - return FALSE; - } - - if(IS_CAN_FLT_DUAL(f1->type)) { - if (!f2 || IS_CAN_FLT_SINGLE(f2->type)) { - return FALSE; - } - } - - if (f1->type == CAN_FLT_STANDARD_SINGLE) { - CANx->FI_OR_ACR0 = f1->ACCEPT.sf.ID28_18 >> 3; - CANx->DI0_OR_ACR1 = (f1->ACCEPT.sf.ID28_18 & 0x07) << 5; - CANx->DI0_OR_ACR1 |= f1->ACCEPT.sf.RTR << 4; - CANx->DI1_OR_ACR2 = f1->ACCEPT.sf.data1; - CANx->DI2_OR_ACR3 = f1->ACCEPT.sf.data2; - - CANx->DI3_OR_AMR0 = f1->MASK.sf.ID28_18 >> 3; - CANx->DI4_OR_AMR1 = (f1->MASK.sf.ID28_18 & 0x07) << 5; - CANx->DI4_OR_AMR1 |= f1->MASK.sf.RTR << 4; - CANx->DI5_OR_AMR2 = f1->MASK.sf.data1; - CANx->DI6_OR_AMR3 = f1->MASK.sf.data2; - } else if (f1->type == CAN_FLT_STANDARD_DUAL) { - CANx->FI_OR_ACR0 = f1->ACCEPT.sf.ID28_18 >> 3; - CANx->DI0_OR_ACR1 = (f1->ACCEPT.sf.ID28_18 & 0x07) << 5; - CANx->DI0_OR_ACR1 |= f1->ACCEPT.sf.RTR << 4; - CANx->DI0_OR_ACR1 |= f1->ACCEPT.sf.data1 >> 4; - CANx->DI2_OR_ACR3 = f1->ACCEPT.sf.data1 & 0x0F; - - CANx->DI3_OR_AMR0 = f1->MASK.sf.ID28_18 >> 3; - CANx->DI4_OR_AMR1 = (f1->MASK.sf.ID28_18 & 0x07) << 5; - CANx->DI4_OR_AMR1 |= f1->MASK.sf.RTR << 4; - CANx->DI4_OR_AMR1 = f1->MASK.sf.data1 >> 4; - CANx->DI6_OR_AMR3 = f1->MASK.sf.data1 & 0x0F; - } else if (f1->type == CAN_FLT_EXTENDED_SINGLE) { - CANx->FI_OR_ACR0 = f1->ACCEPT.ef.ID28_13 >> 8; - CANx->DI0_OR_ACR1 = f1->ACCEPT.ef.ID28_13 & 0xFF; - CANx->DI1_OR_ACR2 = f1->ACCEPT.ef.ID12_0 >> 5; - CANx->DI2_OR_ACR3 = (f1->ACCEPT.ef.ID12_0 & 0x1F) << 3; - CANx->DI2_OR_ACR3 |= f1->ACCEPT.ef.RTR << 2; - - CANx->DI3_OR_AMR0 = f1->MASK.ef.ID28_13 >> 8; - CANx->DI4_OR_AMR1 = f1->MASK.ef.ID28_13 & 0xFF; - CANx->DI5_OR_AMR2 = f1->MASK.ef.ID12_0 >> 5; - CANx->DI6_OR_AMR3 = (f1->MASK.ef.ID12_0 & 0x1F) << 3; - CANx->DI6_OR_AMR3 |= f1->MASK.ef.RTR << 2; - } else { - CANx->FI_OR_ACR0 = f1->ACCEPT.ef.ID28_13 >> 8; - CANx->DI0_OR_ACR1 = f1->ACCEPT.ef.ID28_13 & 0xFF; - - CANx->DI3_OR_AMR0 = f1->MASK.ef.ID28_13 >> 8; - CANx->DI4_OR_AMR1 = f1->MASK.ef.ID28_13 & 0xFF; - } - - if (IS_CAN_FLT_DUAL(f1->type)) { - if (f2->type == CAN_FLT_STANDARD_DUAL) { - CANx->DI1_OR_ACR2 = f2->ACCEPT.sf.ID28_18 >> 3; - CANx->DI2_OR_ACR3 |= (f2->ACCEPT.sf.ID28_18 & 0x07) << 5; - CANx->DI2_OR_ACR3 |= f2->ACCEPT.sf.RTR << 4; - - CANx->DI5_OR_AMR2 = f2->MASK.sf.ID28_18 >> 3; - CANx->DI6_OR_AMR3 |= (f2->MASK.sf.ID28_18 & 0x07) << 5; - CANx->DI6_OR_AMR3 |= f2->MASK.sf.RTR << 4; - } else { - CANx->DI1_OR_ACR2 = f2->ACCEPT.ef.ID28_13 >> 8; - CANx->DI2_OR_ACR3 = f2->ACCEPT.ef.ID28_13 & 0xFF; - - CANx->DI5_OR_AMR2 = f2->MASK.ef.ID28_13 >> 8; - CANx->DI6_OR_AMR3 = f2->MASK.ef.ID28_13 & 0xFF; - } - } - - if (IS_CAN_FLT_SINGLE(f1->type)) { - CANx->MODE_b.AFM = 1; - } else { - CANx->MODE_b.AFM = 0; - } - - return TRUE; -} - -BOOL CAN_Init(CAN0_Type* CANx, CAN_InitTypeDef* Init, - CAN_FILTER *f1, CAN_FILTER *f2) { - assert_param(IS_CAN_ALL_PERIPH(CANx)); - assert_param(Init); - assert_param(IS_CAN_CDR_DIV(Init->CAN_ClockDiv)); - - /* Quit to sleep mode in operation mode */ - if (CANx->MODE_b.SM) { - CANx->MODE_b.RM = FALSE; - CANx->MODE_b.SM = FALSE; - } - - /* switch to reset mode to set parameter */ - CANx->MODE_b.RM = TRUE; - - /* disable all interrupts and clear except receive interrupt */ - { - uint8_t tmp; - CANx->INT_EN &= ~CAN_INT_All; - tmp = CANx->INT; - temp = temp; - } - - CANx->MODE_b.LOM = (Init->CAN_TxEn) ? FALSE : TRUE; - - CANx->MODE_b.STM = Init->CAN_Loopback; - - CANx->CDR_b.OFF = FALSE; - CANx->CDR_b.DIVIDER = Init->CAN_ClockDiv; - - CANx->BTR0_b.BRP = Init->CAN_Prescaler; - CANx->BTR0_b.SJW = Init->CAN_SJW; - - CANx->BTR1_b.TSEG1 = Init->CAN_TSEG1; - CANx->BTR1_b.TSEG2 = Init->CAN_TSEG2; - CANx->BTR1_b.SAM = !Init->CAN_HighSpeed; - - CANx->OCR_b.MODE = CAN_OCR_CLOCK; - - if (!can_SetFilter(CANx, f1, f2)) { - return FALSE; - } - - /* switch to operation mode */ - CANx->MODE_b.RM = FALSE; - - return TRUE; -} - -void CAN_SetSleepMode(CAN0_Type* CANx, BOOL enable) { - assert_param(IS_CAN_ALL_PERIPH(CANx)); - - /* switch to operation mode */ - CANx->MODE_b.RM = FALSE; - - CANx->MODE_b.SM = enable; -} - -void CAN_EnableInt(CAN0_Type* CANx, uint32_t Int, BOOL enable) { - assert_param(IS_CAN_ALL_PERIPH(CANx)); - assert_param(IS_CAN_INT(Int)); - - if (enable) { - CANx->INT_EN |= CAN_INT_All; - } else { - CANx->INT_EN &= ~CAN_INT_All; - } -} - -uint8_t CAN_GetIntStatus(CAN0_Type* CANx) { - assert_param(IS_CAN_ALL_PERIPH(CANx)); - - return CANx->INT; -} - -BOOL CAN_Transmit(CAN0_Type* CANx, CAN_Frame* frame) { - assert_param(IS_CAN_ALL_PERIPH(CANx)); - - if (!frame) { - return FALSE; - } - - if (CANx->MODE_b.LOM) { - return FALSE; - } - - if (CANx->MODE_b.SM) { - CANx->MODE_b.RM = FALSE; - CANx->MODE_b.SM = FALSE; - } - - { - CAN_FRAME_INFO fi; - - fi.U.FI_b.FF = !frame->SFF; - fi.U.FI_b.RTR = frame->RTR; - fi.U.FI_b.DLC = frame->DLC; - - CANx->FI_OR_ACR0 = fi.U.FI; - } - - if (frame->SFF) { - CAN_STANDARD_ID id; - - id.U.ID_b.ID28_21 = frame->Id >> 3; - id.U.ID_b.RTR = frame->RTR; - id.U.ID_b.ID20_18 = frame->Id & 0x07; - - CANx->DI0_OR_ACR1 = id.U.ID & 0xFF; - CANx->DI1_OR_ACR2 = id.U.ID >> 8; - - CANx->DI2_OR_ACR3 = frame->Data[0]; - CANx->DI3_OR_AMR0 = frame->Data[1]; - CANx->DI4_OR_AMR1 = frame->Data[2]; - CANx->DI5_OR_AMR2 = frame->Data[3]; - CANx->DI6_OR_AMR3 = frame->Data[4]; - CANx->DI7 = frame->Data[5]; - CANx->DI8 = frame->Data[6]; - CANx->DI9 = frame->Data[7]; - } else { - CAN_EXTENDED_ID id; - - id.U.ID_b.ID28_21 = frame->Id >> 21; - id.U.ID_b.ID20_13 = (frame->Id >> 13) & 0xFF; - id.U.ID_b.ID12_5 = (frame->Id >> 5) & 0xFF; - id.U.ID_b.RTR = frame->RTR; - id.U.ID_b.ID4_0 = frame->Id & 0x1F; - - CANx->DI0_OR_ACR1 = id.U.ID & 0xFF; - CANx->DI1_OR_ACR2 = (id.U.ID >> 8) & 0xFF; - CANx->DI2_OR_ACR3 = (id.U.ID >> 16) & 0xFF; - CANx->DI3_OR_AMR0 = (id.U.ID >> 24) & 0xFF; - - CANx->DI4_OR_AMR1 = frame->Data[0]; - CANx->DI5_OR_AMR2 = frame->Data[1]; - CANx->DI6_OR_AMR3 = frame->Data[2]; - CANx->DI7 = frame->Data[3]; - CANx->DI8 = frame->Data[4]; - CANx->DI9 = frame->Data[5]; - CANx->DI10 = frame->Data[6]; - CANx->DI11 = frame->Data[7]; - } - - if (CANx->MODE_b.STM) { - CANx->CMD_b.SSR = TRUE; - } else { - CANx->CMD_b.TR = TRUE; - } - - return TRUE; -} - -BOOL CAN_Receive(CAN0_Type* CANx, CAN_Frame* frame) { - assert_param(IS_CAN_ALL_PERIPH(CANx)); - - if (!frame) { - return FALSE; - } - - if (CANx->MODE_b.SM) { - CANx->MODE_b.RM = FALSE; - CANx->MODE_b.SM = FALSE; - } - - { - CAN_FRAME_INFO fi; - - fi.U.FI = CANx->FI_OR_ACR0; - - frame->SFF = fi.U.FI_b.FF ? FALSE : TRUE; - frame->RTR = fi.U.FI_b.RTR ? TRUE : FALSE; - frame->DLC = fi.U.FI_b.DLC; - } - - if (frame->SFF) { - CAN_STANDARD_ID id; - - id.U.ID = CANx->DI0_OR_ACR1; - id.U.ID |= CANx->DI1_OR_ACR2 << 8; - - frame->Id = id.U.ID_b.ID28_21 << 3; - frame->Id |= id.U.ID_b.ID20_18; - - frame->Data[0] = CANx->DI2_OR_ACR3; - frame->Data[1] = CANx->DI3_OR_AMR0; - frame->Data[2] = CANx->DI4_OR_AMR1; - frame->Data[3] = CANx->DI5_OR_AMR2; - frame->Data[4] = CANx->DI6_OR_AMR3; - frame->Data[5] = CANx->DI7; - frame->Data[6] = CANx->DI8; - frame->Data[7] = CANx->DI9; - } else { - CAN_EXTENDED_ID id; - - id.U.ID = CANx->DI0_OR_ACR1; - id.U.ID |= CANx->DI1_OR_ACR2 << 8; - id.U.ID |= CANx->DI2_OR_ACR3 << 16; - id.U.ID |= CANx->DI3_OR_AMR0 << 24; - - frame->Id = id.U.ID_b.ID28_21 << 21; - frame->Id |= id.U.ID_b.ID20_13 << 13; - frame->Id |= id.U.ID_b.ID12_5 << 5; - frame->Id |= id.U.ID_b.ID4_0; - - frame->Data[0] = CANx->DI4_OR_AMR1; - frame->Data[1] = CANx->DI5_OR_AMR2; - frame->Data[2] = CANx->DI6_OR_AMR3; - frame->Data[3] = CANx->DI7; - frame->Data[4] = CANx->DI8; - frame->Data[5] = CANx->DI9; - frame->Data[6] = CANx->DI10; - frame->Data[7] = CANx->DI11; - } - - CANx->CMD_b.RRB = TRUE; - - return TRUE; -} - -- Gitee