历史上的今天
返回首页

历史上的今天

今天是:2024年10月12日(星期六)

正在发生

2020年10月12日 | 直接使用单片机的USART发送数据

2020-10-12 来源:eefocus

一、使用USART发送数据

  我们在写单片机程序的时候,在Debug时,往往要用到串口输出信息,这是会使用printf打印出我们想要的信息来,但是printf有一个弊端,就是输出打印时间较长。这样在一些对时间精度要求非常高的场合,使用printf将会带来一系列问题,这时,如果使用单片机的USART自定义一个协议,直接发送数据到上位机,将会得到我们想要的效果。下面对怎样使用USART发送数据做一个整理。


1、发送单个字符


void USART1_PutChar(u8 ch)

{

USART_SendData8(USART1,(u8)ch);


while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);


while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);

}


2、发送固定长度的字符串


void USART1_PutStrLen(u8 *buf,u16 len)

{

for(;len > 0 ; len--)

{

    USART_SendData8(USART1,*buf++);


    while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);

}


while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);

}


3、发送任意长度的字符串


void USART1_PutStr(u8 *buf)

{

while(*buf)

{

    USART_SendData8(USART1,*buf++);


    while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);

}

while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);

}


二、如何发送16bit的数据

  单片机(STM8)的USART发送的是8bit的数据,所以如果要发送16bit的数据,则需要将16bit的数据转换为8bit的高低两个字节进行发送,需做如下处理。


u16 data;

u8 high_byte,low_byte;

high_byte=data>>8;

low_byte=data;

则经过这样的转换之后,就可以直接使用USART进行发送了。


三、使用翻转电平的方式测量程序执行时间

  我们想要知道某一段代码的执行时间,可以通过示波器来测量,在需要测量的代码处做一个翻转电平的程序,就可以通过示波器来查看程序的执行时间了。代码如下:



 u8 toggle_flag=1;


if(toggle_flag)

{

    GPIO_SetBits(GPIOC,GPIO_Pin_0); 

    toggle_flag=0;

}

else

{

    GPIO_ResetBits(GPIOC,GPIO_Pin_0);

    toggle_flag=1;

}


推荐阅读

史海拾趣

Fastron公司的发展小趣事

Fastron公司深知产品质量对于企业的重要性。因此,公司建立了严格的质量控制体系,从原材料采购到产品生产、检测等各个环节都实行严格的质量控制和管理。Fastron还引进了先进的检测设备和技术手段,确保每一款产品都符合高标准的质量要求。这种对品质的执着追求使得Fastron的产品在市场上具有极高的竞争力。

冠西电子(COSMO)公司的发展小趣事

进入21世纪,冠西电子不断加大在研发方面的投入,成功突破了一系列技术难题,特别是在光耦合器和继电器领域取得了显著成果。这些技术突破不仅提升了冠西电子产品的竞争力,也为其赢得了更多国际大厂的信赖。同时,冠西电子积极拓展市场,其产品广泛应用于电源、互联网设备、电脑系统和相关系统、家电、工业、安防系统等领域,为全球客户提供优质的产品和服务。

Accuride公司的发展小趣事

在经营过程中,Accuride公司也进行了一系列子公司出售和业务调整。例如,它曾宣布出售其子公司Fabco汽车公司。这一举措有助于Accuride公司更加专注于其核心业务,优化资源配置,提升整体运营效率。同时,通过出售子公司,Accuride也获得了一定的资金回流,为公司的未来发展提供了资金支持。

FLEX LTD公司的发展小趣事

随着全球市场的不断扩张,Accuride公司也积极实施全球化战略。其在北美地区拥有多个生产基地和销售网络,同时在加拿大和墨西哥也设有子公司。这些子公司在各自的区域内开展业务,为Accuride公司的全球化战略提供了有力支撑。通过全球化布局,Accuride公司能够更好地满足全球客户的需求,提升品牌影响力和市场竞争力。

虽然这些故事并非直接涉及电子行业,但它们展示了Accuride公司在商用车零部件行业的发展历程、经营策略和市场表现。作为一家具有实力和影响力的企业,Accuride公司通过不断创新、拓展市场、优化资源配置等方式,实现了稳健的发展。

Abilis Systems公司的发展小趣事

随着全球市场的不断扩张,Accuride公司也积极实施全球化战略。其在北美地区拥有多个生产基地和销售网络,同时在加拿大和墨西哥也设有子公司。这些子公司在各自的区域内开展业务,为Accuride公司的全球化战略提供了有力支撑。通过全球化布局,Accuride公司能够更好地满足全球客户的需求,提升品牌影响力和市场竞争力。

虽然这些故事并非直接涉及电子行业,但它们展示了Accuride公司在商用车零部件行业的发展历程、经营策略和市场表现。作为一家具有实力和影响力的企业,Accuride公司通过不断创新、拓展市场、优化资源配置等方式,实现了稳健的发展。

Advanced Electronic Packaging公司的发展小趣事

随着国内市场的逐渐饱和,Advanced Electronic Packaging公司开始将目光投向海外市场。公司积极参与国际电子展会和技术交流活动,展示其先进的封装技术和优质产品。同时,公司还加大了对海外市场的宣传力度,通过线上线下相结合的方式提升品牌知名度和影响力。在不懈的努力下,公司的产品和服务逐渐赢得了国际市场的认可和青睐,海外市场份额逐年攀升。

问答坊 | AI 解惑

基于电流跟踪控制的高压钠灯电子镇流器研制

摘要:针对高压钠灯工作特点以及工作在高频状态下的缺陷,采用电流跟踪技术,设计了一种低频高压钠灯电子镇流器,并设计了可靠的逻辑控制启动电路。最后,给出实验结果。 关键词:高压钠灯;电子镇流器;闭环;电流跟踪   0    引 ...…

查看全部问答>

TSOP封装技术与SOP封装的区别?

在Protel中利用向导创建贴片元件时,你会发现SOP的管脚焊盘默认的是50milX100mil(毫英寸),而TSOP的参数书册给出的是18milX33mil,所以,我想问下是否TSOP(T-Type II)是SOP封装的浓缩型,尺寸有了压缩? 很多SDRAM(比如电脑上的内存条用的芯 ...…

查看全部问答>

keil注册问题

下了个keil3,但是怎么也注册不了,试了几个注册机。怀疑是注册步骤出错了,求详细注册步骤 感谢!!!…

查看全部问答>

刷卡支付功能的手机的相关技术

可以给我讲讲有关刷卡支付功能的手机的关键开发技术吗?…

查看全部问答>

有谁用uclinux进行过嵌入式开发,请帮下忙!

我用的是ylp2440的开发板,其cpu是s3c2410,买的时候带来的是linux2.6.12的内核,以及arm-linux-gcc的交叉编译工具。现在我想让这个板子跑uclinux的系统,那样怎么弄?是不是把uclinux移植到板子上,然后找个交叉编译工具,在linux的虚拟机上编程? ...…

查看全部问答>

请问哪款传感器可以检测水果乙烯浓度

请问哪款传感器可以用来搭配单片机,实现检测水果散发的乙烯浓度的功能,哪位做过的请推荐一款,价格最好在500元左右的,谢谢…

查看全部问答>

基于WINCE 5.0操作平台,在VC2005 开发MFC智能设备应用软件

在VS2005开发平台下,开发的软件直接通过Microsoft ActiveSync 同步软件下载到2440开发扳上可以运行(通过开发环境) ;单独生成Release版本的,脱离开发环境下载到开发板上就不能运行了.    而使用eVC开发的应用程序就不存在这个问题. &nbs ...…

查看全部问答>

问一个107+DP83848初始化的问题

请问一下调试过的朋友, STM32F107+DP83848做网络通讯, 在初始化的时候,是不是必须插网线?…

查看全部问答>