forked from xuos/xiuos
optimize test_can and test_timer
This commit is contained in:
parent
4de08ed386
commit
4c8df066b7
|
@ -60,7 +60,6 @@ void TestCAN(void)
|
||||||
frame_send.stdid = 0x55;
|
frame_send.stdid = 0x55;
|
||||||
frame_send.rtr=0;
|
frame_send.rtr=0;
|
||||||
frame_send.data_lenth=8;
|
frame_send.data_lenth=8;
|
||||||
frame_send.data = data_buff;
|
|
||||||
|
|
||||||
struct CanSendConfigure frame_recv;
|
struct CanSendConfigure frame_recv;
|
||||||
uint8_t recv_buff[65U] = {0};
|
uint8_t recv_buff[65U] = {0};
|
||||||
|
@ -69,13 +68,20 @@ void TestCAN(void)
|
||||||
// CAN write
|
// CAN write
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
PrivTaskDelay(500);
|
// PrivTaskDelay(500);
|
||||||
PrivWrite(can_fd, &frame_send, NONE);
|
// PrivWrite(can_fd, &frame_send, NONE);
|
||||||
PrivTaskDelay(500);
|
// PrivTaskDelay(500);
|
||||||
PrivRead(can_fd, &frame_recv, NONE);
|
PrivRead(can_fd, &frame_recv, NONE);
|
||||||
// if any data has received,Then printf message
|
// if any data has received,Then printf message
|
||||||
if(frame_recv.data_lenth > 0){
|
if(frame_recv.data_lenth > 0){
|
||||||
printf("ID %08x:%s\n",frame_recv.exdid,frame_recv.data);
|
printf("ID %08x : \n",frame_recv.exdid);
|
||||||
|
for(int i = 0; i < frame_recv.data_lenth; i ++) {
|
||||||
|
printf("0x%x ", frame_recv.data[i]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
frame_send.data = recv_buff;
|
||||||
|
PrivWrite(can_fd, &frame_send, NONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,12 +23,13 @@
|
||||||
void TimerFunction(union sigval sig_val)
|
void TimerFunction(union sigval sig_val)
|
||||||
{
|
{
|
||||||
static int cnt = 0;
|
static int cnt = 0;
|
||||||
printf("%s cnt %d\n", __func__, cnt++);
|
printf("%s cnt %d ms %d\n", __func__, cnt++, PrivGetTickTime());
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestTimer(void)
|
void TestTimer(void)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
static int count = 0;
|
||||||
int timer_flags;
|
int timer_flags;
|
||||||
timer_t timer_id;
|
timer_t timer_id;
|
||||||
struct sigevent evp;
|
struct sigevent evp;
|
||||||
|
@ -40,7 +41,9 @@ void TestTimer(void)
|
||||||
evp.sigev_notify_function = TimerFunction;
|
evp.sigev_notify_function = TimerFunction;
|
||||||
evp.sigev_notify_attributes = &timer_flags;
|
evp.sigev_notify_attributes = &timer_flags;
|
||||||
|
|
||||||
ret = timer_create(CLOCK_REALTIME, &evp, &timer_id);
|
count++;
|
||||||
|
|
||||||
|
ret = PrivTimerCreate(count, &evp, &timer_id);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
printf("%s create timer failed ret %d\n", __func__, ret);
|
printf("%s create timer failed ret %d\n", __func__, ret);
|
||||||
return;
|
return;
|
||||||
|
@ -48,14 +51,14 @@ void TestTimer(void)
|
||||||
|
|
||||||
struct itimerspec value;
|
struct itimerspec value;
|
||||||
//active time interval
|
//active time interval
|
||||||
value.it_interval.tv_sec = 2;
|
value.it_interval.tv_sec = 0;
|
||||||
value.it_interval.tv_nsec = 0;
|
value.it_interval.tv_nsec = 1000000 * 10;
|
||||||
|
|
||||||
//first timer set time
|
//first timer set time
|
||||||
value.it_value.tv_sec = 2;
|
value.it_value.tv_sec = 2;
|
||||||
value.it_value.tv_nsec = 0;
|
value.it_value.tv_nsec = 0;
|
||||||
|
|
||||||
ret = timer_settime(timer_id, 1, &value, NULL);
|
ret = PrivTimerModify(timer_id, 1, &value, NULL);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
printf("%s set timer time failed ret %d\n", __func__, ret);
|
printf("%s set timer time failed ret %d\n", __func__, ret);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -24,27 +24,29 @@ Others: connect_can.c for references
|
||||||
|
|
||||||
#define CAN_X (CM_CAN2)
|
#define CAN_X (CM_CAN2)
|
||||||
|
|
||||||
#define CAN_TX_PORT (GPIO_PORT_D)
|
#define CAN_TX_PORT (GPIO_PORT_D)
|
||||||
#define CAN_TX_PIN (GPIO_PIN_07)
|
#define CAN_TX_PIN (GPIO_PIN_07)
|
||||||
#define CAN_RX_PORT (GPIO_PORT_D)
|
#define CAN_RX_PORT (GPIO_PORT_D)
|
||||||
#define CAN_RX_PIN (GPIO_PIN_06)
|
#define CAN_RX_PIN (GPIO_PIN_06)
|
||||||
#define CAN_TX_PIN_FUNC (GPIO_FUNC_62)
|
#define CAN_TX_PIN_FUNC (GPIO_FUNC_62)
|
||||||
#define CAN_RX_PIN_FUNC (GPIO_FUNC_63)
|
#define CAN_RX_PIN_FUNC (GPIO_FUNC_63)
|
||||||
|
|
||||||
#define INTSEL_REG ((uint32_t)(&CM_INTC->SEL0))
|
#define INTSEL_REG ((uint32_t)(&CM_INTC->SEL0))
|
||||||
#define CANX_IRQ_SRC INT_SRC_CAN2_HOST
|
#define CANX_IRQ_SRC INT_SRC_CAN2_HOST
|
||||||
#define CANX_IRQ_NUM 17
|
#define CANX_IRQ_NUM 17
|
||||||
#define IRQ_NUM_OFFSET 16
|
#define IRQ_NUM_OFFSET 16
|
||||||
|
|
||||||
#define CAN_AF1_ID (0x123UL)
|
#define CAN_AF1_ID (0x123UL)
|
||||||
#define CAN_AF1_ID_MSK (0xFFFUL)
|
#define CAN_AF1_ID_MSK (0xFFFUL)
|
||||||
#define CAN_AF1_MSK_TYPE CAN_ID_STD
|
#define CAN_AF1_MSK_TYPE CAN_ID_STD
|
||||||
#define CAN_AF2_ID (0x005UL)
|
|
||||||
#define CAN_AF2_ID_MSK (0x00FUL)
|
#define CAN_AF2_ID (0x005UL)
|
||||||
#define CAN_AF2_MSK_TYPE CAN_ID_STD
|
#define CAN_AF2_ID_MSK (0x00FUL)
|
||||||
#define CAN_AF3_ID (0x23UL)
|
#define CAN_AF2_MSK_TYPE CAN_ID_STD
|
||||||
#define CAN_AF3_ID_MSK (0xFFUL)
|
|
||||||
#define CAN_AF3_MSK_TYPE CAN_ID_STD
|
#define CAN_AF3_ID (0x23UL)
|
||||||
|
#define CAN_AF3_ID_MSK (0xFFUL)
|
||||||
|
#define CAN_AF3_MSK_TYPE CAN_ID_STD
|
||||||
|
|
||||||
#ifdef CAN_USING_INTERRUPT
|
#ifdef CAN_USING_INTERRUPT
|
||||||
void CanIrqHandler(int vector, void *param)
|
void CanIrqHandler(int vector, void *param)
|
||||||
|
@ -95,18 +97,9 @@ static void CanInit(struct CanDriverConfigure *can_drv_config)
|
||||||
stcInit.stcBitCfg.u32TimeSeg2 = can_drv_config->tbs2;
|
stcInit.stcBitCfg.u32TimeSeg2 = can_drv_config->tbs2;
|
||||||
stcInit.u8WorkMode = can_drv_config->mode;
|
stcInit.u8WorkMode = can_drv_config->mode;
|
||||||
|
|
||||||
#ifdef CAN_USING_FD
|
|
||||||
stcInit.stcFDCfg.u8TDCSSP = 16U;
|
|
||||||
stcInit.stcFDCfg.u8CANFDMode = CAN_FD_MODE_ISO_11898;
|
|
||||||
stcInit.stcFDCfg.stcFBT.u32SEG1 = 16U;
|
|
||||||
stcInit.stcFDCfg.stcFBT.u32SEG2 = 4U;
|
|
||||||
stcInit.stcFDCfg.stcFBT.u32SJW = 4U;
|
|
||||||
stcInit.stcFDCfg.stcFBT.u32Prescaler = 1U;
|
|
||||||
(void)CAN_FD_Init(APP_CAN_UNIT, &stcInit);
|
|
||||||
#else
|
|
||||||
FCG_Fcg1PeriphClockCmd(PWC_FCG1_CAN2, ENABLE);
|
FCG_Fcg1PeriphClockCmd(PWC_FCG1_CAN2, ENABLE);
|
||||||
(void)CAN_Init(CAN_X, &stcInit);
|
(void)CAN_Init(CAN_X, &stcInit);
|
||||||
#endif
|
|
||||||
CAN_ClearStatus(CAN_X, 0xFFFFFFFFU);
|
CAN_ClearStatus(CAN_X, 0xFFFFFFFFU);
|
||||||
|
|
||||||
#ifdef CAN_USING_INTERRUPT
|
#ifdef CAN_USING_INTERRUPT
|
||||||
|
|
Loading…
Reference in New Issue