你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

请教大家,使用Mbed库,串口如何接收一个字符串?

[复制链接]
foxmail-364565 提问时间:2015-7-30 14:04 /
本帖最后由 foxmail-364565 于 2015-7-30 14:17 编辑

getc 只能收一个字节.
scanf 需要字符串以换行符结尾.

如题,就是非阻塞方式接收一个字符串,感谢回复.
STM32里有线路空闲中断,Mbed里没用到.

收藏 评论17 发布时间:2015-7-30 14:04

举报

17个回答
单片机爱好者 回答时间:2019-10-22 22:57:38

unsigned char Cnt = 0;
unsigned char UART_RXD[32];



Timeout UARTtimeout;



void UARTtimeoutFunc()
{
       
        pc.printf("length = %d  UART Revice OK\r\n",Cnt);
       
        Cnt = 0;
       
}


void callback()
{
       
        char buf[32];

        UART_RXD[Cnt++] = pc.getc();

       
        UARTtimeout.attach(&UARTtimeoutFunc, 0.010);

}


int main()
{
       
        //Thread msdTask(msd_task, NULL, osPriorityNormal, 1024 * 4);
        //pc.format(8,SerialBase::None,1);
        ////pc.baud(115200);
        timer.attach(&attime, 0.2);
        //event.fall(&trigger);
        set_time(1256729737);  // Set RTC time to Wed, 28 Oct 2009 11:35:37
         Dac = 0.3;
       
        tri = 0.7;
        pc.attach(&callback);
       
    while(1)
                {
                                //pc.printf("length = %d\r\n",Cnt);
                                wait_ms(1000);
                               

                        //        pc.printf("Too hot! (%f)\r\n", temperature.read());
                                               
    }
}
foxmail-364565 回答时间:2015-7-31 13:54:06
本帖最后由 foxmail-364565 于 2015-7-31 13:55 编辑
党国特派员 发表于 2015-7-31 09:43
void echouart()
{
    pc.putc(pc.getc());
}
//设置接收回调
pc.attach(&echouart,SerialBase::RxIrq);


嗯,以前用8位的单片机时就是这样做的.
党国特派员 回答时间:2015-8-1 13:47:44
mbed 思想很好。 null - 副本 - 副本 - 副本.png null - 副本 - 副本 (3).png null - 副本 (2) - 副本.png null - 副本 (3).png null - 副本.png
Paderboy 回答时间:2015-7-30 15:13:10
Mbed,封装的太狠了。。。还是用Hal库自己写吧。。或者你会标准库也一样
废鱼 回答时间:2015-7-30 15:40:43
同意楼上的观点。
moyanming2013 回答时间:2015-7-30 16:19:35
1.jpg
沐紫 回答时间:2015-7-30 16:44:49

不能一直回复这样刷帖,警告,否则扣除金币了
slotg 回答时间:2015-7-30 17:15:54
你参考一下这篇帖子,看有没有帮助?

http://www.freescaleic.org/module/forum/thread-600203-1-1.html
moyanming2013 回答时间:2015-7-30 18:11:31
沐紫 发表于 2015-7-30 16:44
不能一直回复这样刷帖,警告,否则扣除金币了

知道了。。。
你好我好大家好! 回答时间:2015-7-30 21:45:11
帮顶                           
mark0668 回答时间:2015-7-30 22:51:13
帮顶,这工具不好.要想写强大的软件就用开发工具
foxmail-364565 回答时间:2015-7-31 08:07:34
感谢大家回复!
原来是用HAL库的,
但是MBed可以写出去单片机型号无关的代码,就想偷下懒.
党国特派员 回答时间:2015-7-31 09:34:23
  1. char ch;
  2. Serial pc(USBTX, USBRX); // tx, rx
  3. if ( pc.readable() ) {
  4.   ch =pc.getc();
  5. }
复制代码

党国特派员 回答时间:2015-7-31 09:43:11
  1. void echouart()
  2. {
  3.     pc.putc(pc.getc());
  4. }
  5. //设置接收回调
  6. pc.attach(&echouart,SerialBase::RxIrq);
复制代码


党国特派员 回答时间:2015-7-31 09:43:47
mbed设置中断都是通过 attach
JackieLaura 回答时间:2015-7-31 10:14:00
用库方便多了。。。MBED看不到底层,要实现一些特殊功能,可能还需要自己用库去封装MBED驱动。。。
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版