|
我在使用瑞萨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周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|