Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
H
haoJin750TFT
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
时昊
haoJin750TFT
Commits
dfe01c73
Commit
dfe01c73
authored
Dec 31, 2024
by
张金硕
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
✨
feat:新增休眠唤醒启停DMA功能
parent
6d59e9d9
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
15 additions
and
5 deletions
+15
-5
PowerManag_user.c
Firmware/Source/Component/PowerManagement/PowerManag_user.c
+11
-4
RTE_UART.c
...are/Source/Device/Cmsemicon/BAT32A279/RTE/UART/RTE_UART.c
+3
-1
RTE_UART.h
...are/Source/Device/Cmsemicon/BAT32A279/RTE/UART/RTE_UART.h
+1
-0
No files found.
Firmware/Source/Component/PowerManagement/PowerManag_user.c
View file @
dfe01c73
...
@@ -56,16 +56,16 @@ static void Power_KL30_Init(void)
...
@@ -56,16 +56,16 @@ static void Power_KL30_Init(void)
#endif
#endif
UART_DeInit
(
UART2
);
//50us
UART_DeInit
(
UART2
);
//50us
RTE_UART_Init
(
UART_CH2
,
&
loc_config
);
//68.35ms
RTE_UART_Init
(
UART_CH2
,
&
loc_config
);
//68.35ms
#if (MCU_RX_630_MODE == MCU_RX_630_MODE_UART_DMA)
DMA_InitTypeDef
DMA_InitTypeDef_Struct
;
DMA_InitTypeDef
DMA_InitTypeDef_Struct
;
DMA_InitTypeDef_Struct
.
DMA_Vector
=
DMA_VECTOR_SR2
;
//指定串口2为启动源
DMA_InitTypeDef_Struct
.
DMA_Vector
=
DMA_VECTOR_SR2
;
//指定串口2为启动源
DMA_InitTypeDef_Struct
.
DMA_CtrlId
=
4
;
//指定启动源在DMA控制数据区的ID
DMA_InitTypeDef_Struct
.
DMA_CtrlId
=
4
;
//指定启动源在DMA控制数据区的ID
DMA_InitTypeDef_Struct
.
DMA_SrcAddr
=
(
uint32_t
)
&
SCI1
->
SCI
.
RXD2
/*0x40041512*/
;
//传送源地址
DMA_InitTypeDef_Struct
.
DMA_SrcAddr
=
(
uint32_t
)
&
SCI1
->
SCI
.
RXD2
/*0x40041512*/
;
//传送源地址
DMA_InitTypeDef_Struct
.
DMA_DstAddr
=
(
uint32_t
)
UartRevBuff1
;
//传送目标地址
DMA_InitTypeDef_Struct
.
DMA_DstAddr
=
(
uint32_t
)
UartRevBuff1
;
//传送目标地址
DMA_InitTypeDef_Struct
.
DMA_BufferSize
=
MCU_RX_630_UART_BUF_SIZE
;
//0x800的buffer,也是DMA重复循环一轮传输数据的次数
DMA_InitTypeDef_Struct
.
DMA_BufferSize
=
MCU_RX_630_UART_BUF_SIZE
;
//0x800的buffer,也是DMA重复循环一轮传输数据的次数
DMA_InitTypeDef_Struct
.
DMA_SrcInc
=
0
;
//传送源地址不自增,DMACR寄存器,MODE位为“1”(重复模式)并且RPTSEL位为“1”(传送源为重复区)时,SAMOD位的设置无效。
DMA_InitTypeDef_Struct
.
DMA_SrcInc
=
0
;
//传送源地址不自增,DMACR寄存器,MODE位为“1”(重复模式)并且RPTSEL位为“1”(传送源为重复区)时,SAMOD位的设置无效。
DMA_InitTypeDef_Struct
.
DMA_DstInc
=
0
;
//传送目标地址自增,DMACR寄存器,MODE位为“1”(重复模式)并且RPTSEL位为“0”(传送目标为重复区)时,
S
AMOD位的设置无效。
DMA_InitTypeDef_Struct
.
DMA_DstInc
=
0
;
//传送目标地址自增,DMACR寄存器,MODE位为“1”(重复模式)并且RPTSEL位为“0”(传送目标为重复区)时,
D
AMOD位的设置无效。
DMA_InitTypeDef_Struct
.
DMA_DataSize
=
DMA_DataSize_Byte
;
//传送数据长度为8位
DMA_InitTypeDef_Struct
.
DMA_DataSize
=
DMA_DataSize_Byte
;
//传送数据长度为8位
DMA_InitTypeDef_Struct
.
DMA_Mode
=
DMA_Mode_Repeat
;
//重复模式
DMA_InitTypeDef_Struct
.
DMA_Mode
=
DMA_Mode_Repeat
;
//重复模式
DMA_InitTypeDef_Struct
.
DMA_RepeatAreaAddr
=
DMA_RepeatAreaAddr_Dst
;
//DMACR寄存器,RPTSEL位为“0”(传送目标为重复区)
DMA_InitTypeDef_Struct
.
DMA_RepeatAreaAddr
=
DMA_RepeatAreaAddr_Dst
;
//DMACR寄存器,RPTSEL位为“0”(传送目标为重复区)
...
@@ -74,6 +74,7 @@ static void Power_KL30_Init(void)
...
@@ -74,6 +74,7 @@ static void Power_KL30_Init(void)
DMA_Init
(
&
DMA_InitTypeDef_Struct
);
DMA_Init
(
&
DMA_InitTypeDef_Struct
);
DMA_Start
(
DMA_VECTOR_SR2
);
DMA_Start
(
DMA_VECTOR_SR2
);
#endif
Common_DataInit
();
//50us
Common_DataInit
();
//50us
Analog_Signal_Conv_Init
();
//150us
Analog_Signal_Conv_Init
();
//150us
...
@@ -134,7 +135,7 @@ static void Power_Wakeup_Init(void)
...
@@ -134,7 +135,7 @@ static void Power_Wakeup_Init(void)
BackLight_WakeUp_Init
();
BackLight_WakeUp_Init
();
RTE_UART_Sleep_Init
(
UART_CH2
);
RTE_UART_Sleep_Init
(
UART_CH2
);
loc_config
.
u32UARTChEn
=
1U
;
loc_config
.
u32UARTChEn
=
1U
;
loc_config
.
u32UARTbps
=
1152
00U
;
loc_config
.
u32UARTbps
=
5000
00U
;
loc_config
.
pfnUARTConfirmCallBack
=
NULL
;
loc_config
.
pfnUARTConfirmCallBack
=
NULL
;
#if (MCU_RX_630_MODE == MCU_RX_630_MODE_UART_INTERRUPT)
#if (MCU_RX_630_MODE == MCU_RX_630_MODE_UART_INTERRUPT)
loc_config
.
pfnUARTReadMsgCallBack
=
Amt630hUartRecvData
;
loc_config
.
pfnUARTReadMsgCallBack
=
Amt630hUartRecvData
;
...
@@ -145,6 +146,9 @@ static void Power_Wakeup_Init(void)
...
@@ -145,6 +146,9 @@ static void Power_Wakeup_Init(void)
#endif
#endif
UART_DeInit
(
UART2
);
UART_DeInit
(
UART2
);
RTE_UART_Init
(
UART_CH2
,
&
loc_config
);
/* 配置串口,630H上电发送0x0D,但是底板没回复 */
RTE_UART_Init
(
UART_CH2
,
&
loc_config
);
/* 配置串口,630H上电发送0x0D,但是底板没回复 */
#if (MCU_RX_630_MODE == MCU_RX_630_MODE_UART_DMA)
DMA_Start
(
DMA_VECTOR_SR2
);
#endif
Amt630hInit
();
Amt630hInit
();
Telltales_Init
();
Telltales_Init
();
Key_KL30_Init_EXample
();
Key_KL30_Init_EXample
();
...
@@ -204,6 +208,9 @@ static void Power_Sleep_Init(void)
...
@@ -204,6 +208,9 @@ static void Power_Sleep_Init(void)
Gpio_Init
(
Gpio_Sleep_Init
);
Gpio_Init
(
Gpio_Sleep_Init
);
Analog_Signal_Conv_Stop
();
Analog_Signal_Conv_Stop
();
RTE_UART_Sleep_Init
(
UART_CH2
);
RTE_UART_Sleep_Init
(
UART_CH2
);
#if (MCU_RX_630_MODE == MCU_RX_630_MODE_UART_DMA)
DMA_Stop
(
DMA_VECTOR_SR2
);
#endif
CGC_HSI_CFG_AS_FCLK
();
/* 配置时钟生成控制器(cgc)以将内部高速振荡器(HSI)作为CPU系统时钟(FCLK)以及可能的其他硬件电路的时钟源。 */
CGC_HSI_CFG_AS_FCLK
();
/* 配置时钟生成控制器(cgc)以将内部高速振荡器(HSI)作为CPU系统时钟(FCLK)以及可能的其他硬件电路的时钟源。 */
//SystemCoreClockUpdate(); /* 更新时钟频率,暂时用不上,先注释 */
//SystemCoreClockUpdate(); /* 更新时钟频率,暂时用不上,先注释 */
RTE_DEEPSLEEP_Enable
();
RTE_DEEPSLEEP_Enable
();
...
...
Firmware/Source/Device/Cmsemicon/BAT32A279/RTE/UART/RTE_UART.c
View file @
dfe01c73
...
@@ -201,7 +201,9 @@ uint32_t RTE_UART_Init(UART_Channel_en_t enUARTCh, UART_Channel_Config_st_t *pen
...
@@ -201,7 +201,9 @@ uint32_t RTE_UART_Init(UART_Channel_en_t enUARTCh, UART_Channel_Config_st_t *pen
stUARTCh2Cfg
.
pfnUARTReadMsgCallBack
=
penUARTCfg
->
pfnUARTReadMsgCallBack
;
stUARTCh2Cfg
.
pfnUARTReadMsgCallBack
=
penUARTCfg
->
pfnUARTReadMsgCallBack
;
ISR_Register
(
ST2_IRQn
,
UART_CH2_TX_ISR
);
//串口2发送中断服务路径注册
ISR_Register
(
ST2_IRQn
,
UART_CH2_TX_ISR
);
//串口2发送中断服务路径注册
// ISR_Register(SR2_IRQn, UART_CH2_RX_ISR); //串口2接收中断服务路径注册
#if (MCU_RX_630_MODE == MCU_RX_630_MODE_UART_INTERRUPT)
ISR_Register
(
SR2_IRQn
,
UART_CH2_RX_ISR
);
//串口2接收中断服务路径注册
#endif
ret
=
UART_Init
(
UART2
,
&
stUART_InitStruct
);
ret
=
UART_Init
(
UART2
,
&
stUART_InitStruct
);
break
;
break
;
...
...
Firmware/Source/Device/Cmsemicon/BAT32A279/RTE/UART/RTE_UART.h
View file @
dfe01c73
...
@@ -3,6 +3,7 @@
...
@@ -3,6 +3,7 @@
#include "stdint.h"
#include "stdint.h"
#include "uart.h"
#include "uart.h"
#include "Components.h"
/***************************************************************/
/***************************************************************/
/***************************************************************/
/***************************************************************/
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment