一、使用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;
}
上一篇:STM8L052 温度控制器
下一篇:初识STM8S105K心得
推荐阅读
史海拾趣
为了进一步提升市场份额和品牌影响力,DIOTECH公司开始加大市场拓展力度。通过参加国际电子展会、举办新品发布会等活动,公司成功吸引了全球范围内的客户和合作伙伴的关注。同时,公司还加强了品牌建设,通过一系列营销活动提升了品牌知名度和美誉度。这些努力使得DIOTECH逐渐成为了电子行业内的知名品牌。
为了确保产品质量和客户满意度,Celduc Relais公司投入大量资源建立了完善的质量管理体系。公司引入了先进的质量管理工具和方法,通过严格的质量控制和持续改进,不断提升产品质量和服务水平。这一举措不仅增强了客户对公司的信任,也为公司在激烈的市场竞争中保持领先地位提供了有力保障。
Celduc Relais公司自创立之初,便以技术创新为核心驱动力。在公司的早期发展阶段,研发团队成功开发了一款具有颠覆性的继电器产品,该产品在性能、稳定性和寿命等方面均达到了行业领先水平。这一突破性的技术创新不仅为公司赢得了市场的广泛认可,也为后续的产品线扩展和技术升级奠定了坚实基础。
面对未来,EVERLIGHT有着明确的发展规划。公司将继续加大研发投入,不断推出创新型的LED产品和技术解决方案。同时,公司还将加强与国际知名品牌的合作,拓展更广阔的市场空间。此外,EVERLIGHT还将积极应对市场变化和竞争挑战,不断提升自身的核心竞争力和市场影响力。在未来的发展中,EVERLIGHT将继续秉持创新、品质、环保的理念,为电子行业的发展做出更大的贡献。
在电子行业的早期,FDK AMERICA公司凭借其卓越的技术研发能力,成功开发出一款高性能的集成电路产品。这款产品在市场上迅速获得了认可,并为公司带来了可观的利润。随后,公司继续加大研发投入,不断推出创新产品,逐步确立了其在电子行业的领先地位。
随着技术的不断成熟,DCX-CHOL Enterprises的产品逐渐在市场上树立了良好的口碑。公司敏锐地捕捉到智能家居、物联网等新兴领域对电子产品的巨大需求,于是开始将产品线向这些领域拓展。通过与行业领军企业的合作,DCX-CHOL Enterprises成功地将产品打入这些新兴市场,市场份额逐年上升。同时,公司还积极开拓国际市场,将产品出口到多个国家和地区,进一步扩大了公司的知名度和影响力。
我用的是f2812,所以运行库是rts2800(是在ram仿真中运行的库),头文件包含了math.h 想试一下它的数学库的能力, float z; z=cos(90); z=cos(135); z=sin(90); z=sin(45); 单步运行看结果,发现算出的结果差强人意: cos(90) = -0.448073 ...… 查看全部问答∨ |
求助!!那位高手大哥!能帮忙我写个连发心片(支持十个按键),我想给XBOX360无线手柄加上连发功能!按TURBO二下(一下是半自动)+你所要想要连发的键,取消的话按连发的键+手柄后的Clean键就取消了! 市场只有卖HORI牌支持4个按键有线的(不好用)! ...… 查看全部问答∨ |
在仿真LNA时,遇到这样的一个问题,要看噪声系数圆,要输入这样公式:circleData=ns_circle(NFmin[indx]+{0,0.1,0.2},NFmin[indx],Spot[indx],Rn[indx]/50,51)… 查看全部问答∨ |
|
通常需要在芯片的VCC端与电源进行连接时,需要并接一个电容并将该电容的另一端接地,说是用来滤除电源的交流成分! 我的问题是,为芯片提供电源的是一个5v的支流电源啊?何来的交流成分啊??? 5v --- | ...… 查看全部问答∨ |
|
WINCE 设备调试过程中,MFC视图的OnDraw函数中 一段代码总是过不去 WINCE 设备调试过程中,MFC视图的OnDraw函数中 一段代码总是过不去 仔细检查发现 并无问题 但就是过不去 当我 用 Messagebox一步步调试一 遍就可以进去了 然后去掉MESSAGEBOX程序可以顺利通过了 这样的问题已经碰到几次了 &n ...… 查看全部问答∨ |
|
MX53 Industrial Embedded WinCE7 System, Yuanying To be one of technical leader company, in past few year Yuanying Tech always focus on embedded system solution offering, from low end to high end. Our platform including MX25, MX28, MX35 and MX51. From Nov of last year, Yuanying ...… 查看全部问答∨ |