|
我在使用瑞萨RX62N单片机,有瑞萨官方提供的RPDL驱动,实现通过DMA接收SCI的数据,但是SCI发送不通过DMA,结果我的发送串口收不到。
代码如下:
/* PDL functions and definitions */
#include "r_pdl_dmac.h"
#include "r_pdl_cgc.h"
#include "r_pdl_intc.h"
#include "r_pdl_sci.h"
/* RPDL device-specific definitions */
#include "r_pdl_definitions.h"
/* Callback function prototype */
void DMAC2_transfer_end_handler(void);
void main(void);
/* Data destination area */
volatile uint8_t destination_string_1[32]={0};
void main(void)
{
unsigned char i;
/* Initialise the system clocks */
R_CGC_Set(
8E6,
64E6,
32E6,
PDL_NO_DATA,
PDL_CGC_BCLK_DISABLE
);
/* Set the CPU’s Interrupt Priority Level to 0 */
R_INTC_Write(
PDL_INTC_REG_IPL,
0
);
/* Configure the RS232 port */
R_SCI_Create(
2,
PDL_SCI_ASYNC |PDL_SCI_TX_CONNECTED | PDL_SCI_RX_CONNECTED | PDL_SCI_8_BIT_LENGTH | PDL_SCI_PARITY_NONE | PDL_SCI_STOP_1,
115200,
7
);
/* Configure channel 2 */
R_DMAC_Create(
2,
PDL_DMAC_NORMAL | PDL_DMAC_SOURCE_ADDRESS_FIXED| \
PDL_DMAC_DESTINATION_ADDRESS_PLUS| PDL_DMAC_SIZE_8 | PDL_DMAC_IRQ_END | PDL_DMAC_TRIGGER_CLEAR,
PDL_DMAC_TRIGGER_SCI2_RX,
(uint8_t *)&SCI2.RDR,
destination_string_1,
32,
PDL_NO_DATA,
PDL_NO_DATA,
PDL_NO_DATA,
PDL_NO_DATA,
DMAC2_transfer_end_handler,
0
);
/* Enable channel 2 */
R_DMAC_Control(
2,
PDL_DMAC_ENABLE,
PDL_NO_PTR,
PDL_NO_PTR,
PDL_NO_DATA,
PDL_NO_DATA,
PDL_NO_DATA,
PDL_NO_DATA,
PDL_NO_DATA
);
/* Initiate reception, triggering the DMAC when data is received */
R_SCI_Receive(
2,
PDL_SCI_DMAC_TRIGGER_ENABLE,
PDL_NO_PTR,
PDL_NO_DATA,
PDL_NO_FUNC,
PDL_NO_FUNC
);
R_SCI_Send(
2,
PDL_NO_DATA,
"SEND",
0,
PDL_NO_FUNC
);
}
void DMAC2_transfer_end_handler(void)
{
/* Disable channel 2 */
R_DMAC_Control(
2,
PDL_DMAC_SUSPEND,
PDL_NO_PTR,
PDL_NO_PTR,
PDL_NO_DATA,
PDL_NO_DATA,
PDL_NO_DATA,
PDL_NO_DATA,
PDL_NO_DATA
);
} |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|