关于串口的发送和接受

想请问工程师:

1.有没有串口发送和接受数据的例程参考,在blink中的串口找不到对应函数的调用,就只看到一个printf,对其余串口的函数调用没有什么帮助

2.scifa中的doc中的案例一直走不通,运行还会卡在这里没有反应

急,谢谢工程师

Parents
  • 检查一下这个文件里/generate/configuration/r_devlink_wrapper_cfg.h
    有没有定义scifa3,如果没有定义的话就加上。
    理论上如果使用代码生成器的话,就会在这个数组里有定义
    static st_mount_table_t gs_mount_table[] =
    {
    /* "cpg" and "gpio" are fixed entry.
    * users can not use these name as configuration name.
    */
    {"cpg", (st_r_driver_t *)&g_cpg_driver, R_SC0},
    {"gpio", (st_r_driver_t *)&g_gpio_driver, R_SC0},
    /* This code is auto-generated. Do not edit manually */
    { "scifa4", (st_r_driver_t *)&g_scifa_driver, R_SC0 },
    { "ostm0", (st_r_driver_t *)&g_ostm_driver, R_SC0 },
    { "ostm_reserved", (st_r_driver_t *)&g_ostm_driver, R_SC1 },
    /* End of modification */
  • /* Mount table should only be access directly by this file */
    static st_mount_table_t gs_mount_table[] =
    {
    /* "cpg" and "gpio" are fixed entry.
    * users can not use these name as configuration name.
    */
    {"cpg", (st_r_driver_t *)&g_cpg_driver, R_SC0},
    {"gpio", (st_r_driver_t *)&g_gpio_driver, R_SC0},
    /* This code is auto-generated. Do not edit manually */
    { "scifa4", (st_r_driver_t *)&g_scifa_driver, R_SC0 },
    { "scifa3", (st_r_driver_t *)&g_scifa_driver, R_SC1 },
    { "ostm0", (st_r_driver_t *)&g_ostm_driver, R_SC0 },
    { "ostm_reserved", (st_r_driver_t *)&g_ostm_driver, R_SC1 },
    { "ostm1", (st_r_driver_t *)&g_ostm_driver, R_SC2 },
    /* End of modification */

    /* Modified by user, drivers that are not under the control of sc added here */
    /** SCIFA Channel 4 Driver added by USER */
    {"stdin", (st_r_driver_t *)&g_scifa_driver, R_SC0},

    /** SCIFA Channel 4 Driver added by USER */
    {"stdout", (st_r_driver_t *)&g_scifa_driver, R_SC0},

    /** SCIFA Channel 4 Driver added by USER */
    {"stderr", (st_r_driver_t *)&g_scifa_driver, R_SC0},
    /* End of user modification */
    有的这个地方已经生成了,但是还是会卡
    想再问问工程师,串口的应该调用哪些函数去打开串口和发送消息呀?
  • 调用open 打开,write read操作就可以,在手册里有说明,如果卡了的话,跟踪一下程序,看一下卡到哪里了。
  • 那工程师我看doc中写,open函数open (DEVICE_IDENTIFIER "scifa0", O_RDWR);是用STDIO模式下打开的,而direct_open ("scifa0", 0);是用direct模式打开的,我们应用的例程中间是用哪种模式打开的这个应该怎么查看呀?
  • 两种方法都可以,我的理解是,open的这组函数的接口是与stdio.h兼容的,也就是与C语言的标准输入输出函数兼容的,如果使用这组函数,那么你的代码在移植到其他系统时比较方便,只要重新编写open库函数的最底层部分就可以了,而使用direct_open可以简化操作,效率要比open稍高一点,但是在移植时需要自己实现direct_open函数的这一组所有函数。
Reply
  • 两种方法都可以,我的理解是,open的这组函数的接口是与stdio.h兼容的,也就是与C语言的标准输入输出函数兼容的,如果使用这组函数,那么你的代码在移植到其他系统时比较方便,只要重新编写open库函数的最底层部分就可以了,而使用direct_open可以简化操作,效率要比open稍高一点,但是在移植时需要自己实现direct_open函数的这一组所有函数。
Children
No Data