【项目实战】复旦微MCU+RT-thread+Moudbus(2)

第一步:

485 引脚 :uart4 TX PA1 RX PA0 EN PA3

【项目实战】复旦微MCU+RT-thread+Moudbus(2)_第1张图片

第二步:

添加Freemodbus库

【项目实战】复旦微MCU+RT-thread+Moudbus(2)_第2张图片

 选择Slave mode 【项目实战】复旦微MCU+RT-thread+Moudbus(2)_第3张图片

 改为串口4【项目实战】复旦微MCU+RT-thread+Moudbus(2)_第4张图片

保存,退出!

第三步:pkgs --update

【项目实战】复旦微MCU+RT-thread+Moudbus(2)_第5张图片

 scons --target=mdk5

重新生成工程!

第四步:复旦微的pin device框架好像木有唉!485的使能引脚这里修改为手动配置引脚即可.

【项目实战】复旦微MCU+RT-thread+Moudbus(2)_第6张图片

然后重新手动处理了EN引脚的:

#if defined(RT_MODBUS_SLAVE_USE_CONTROL_PIN)
    //rt_pin_mode(MODBUS_SLAVE_RT_CONTROL_PIN_INDEX, PIN_MODE_OUTPUT);
	  FL_GPIO_InitTypeDef GPIO_InitStruct = {0};
    GPIO_InitStruct.pin = FL_GPIO_PIN_4;
    GPIO_InitStruct.mode = FL_GPIO_MODE_OUTPUT;
    GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
    GPIO_InitStruct.pull = FL_DISABLE;
    FL_GPIO_Init(GPIOA, &GPIO_InitStruct);	
#endif
void vMBPortSerialEnable(BOOL xRxEnable, BOOL xTxEnable)
{
    rt_uint32_t recved_event;
    if (xRxEnable)
    {
        /* enable RX interrupt */
        serial->ops->control(serial, RT_DEVICE_CTRL_SET_INT, (void *)RT_DEVICE_FLAG_INT_RX);
        /* switch 485 to receive mode */
#if defined(RT_MODBUS_SLAVE_USE_CONTROL_PIN)
			  FL_GPIO_ResetOutputPin(GPIOA, FL_GPIO_PIN_4);
        //rt_pin_write(MODBUS_SLAVE_RT_CONTROL_PIN_INDEX, PIN_LOW);
#endif
    }
    else
    {
        /* switch 485 to transmit mode */
#if defined(RT_MODBUS_SLAVE_USE_CONTROL_PIN)
			  FL_GPIO_SetOutputPin(GPIOA, FL_GPIO_PIN_4);
        //rt_pin_write(MODBUS_SLAVE_RT_CONTROL_PIN_INDEX, PIN_HIGH);
#endif
        /* disable RX interrupt */
        serial->ops->control(serial, RT_DEVICE_CTRL_CLR_INT, (void *)RT_DEVICE_FLAG_INT_RX);
    }
    if (xTxEnable)
    {
        /* start serial transmit */
        rt_event_send(&event_serial, EVENT_SERIAL_TRANS_START);
    }
    else
    {
        /* stop serial transmit */
        rt_event_recv(&event_serial, EVENT_SERIAL_TRANS_START,
                RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR, 0,
                &recved_event);
    }
}

呦呵编译过了!

第五步:

看结果!

【项目实战】复旦微MCU+RT-thread+Moudbus(2)_第7张图片

 呃呃呃!

问题来了,这里呆掉了!找了好久没找到原因唉!

脑壳疼,下一节接着解BUG。

你可能感兴趣的:(复旦微MCU,单片机)