当前位置: 首页 > news >正文

卢氏县住房和城乡建设局网站软文代写兼职

卢氏县住房和城乡建设局网站,软文代写兼职,宁波建设网站多少钱,推广软文范例100字嵌入式_GD32使用宏开关进行Debug串口打印调试 串口Debug是一种将数据通过串口发送的方法。通过使用printf函数,我们可以将需要发送的数据格式化为字符串,并通过串口发送出去。在C语言中,通常使用串口发送数据的函数为printf函数,…

嵌入式_GD32使用宏开关进行Debug串口打印调试

串口Debug是一种将数据通过串口发送的方法。通过使用printf函数,我们可以将需要发送的数据格式化为字符串,并通过串口发送出去。在C语言中,通常使用串口发送数据的函数为printf函数,但是需要将标准输出重定向到串口。


文章目录

  • 嵌入式_GD32使用宏开关进行Debug串口打印调试
  • 前言
  • 一、什么是printf/fputc重定向?
  • 二、配置步骤
    • 1.串口配置
    • 2.宏开关
  • 三、注意事项
    • 1.关闭半主机模式
    • 2.输出十六进制数据
  • 总结


前言

本文详细的介绍了如何重定向printf输出到串口输出的多种方法,包括调用MDK微库(MicroLib)的方法,调用标准库的方法,以及适用于 GNUC 系列编译器的方法。
注:本项目基于GD32F103CBT6硬件平台, 使用标准库GD32F10x_Firmware_Library_V2.2.4


一、什么是printf/fputc重定向?

printf 函数可以输出各种类型的数据,使用格式控制输出各种长度的字符,甚至输出各种各样的图案。因此在程序出错的时候,懒得调试,直接简单粗暴的加个 printf 找bug,有时候也不失为一种有效的方法。

printf 作为变参函数,参数由右向左以此进入函数
定义在 <stdio.h> 头文件中,如下:

int printf(const char *format, ...);

printf 函数根据 format 字符串给出的格式打印输出到 stdout(标准输出)中,当然,printf 函数是不会一个字符一个字符去输出,它会调用更底层的 I/O 函数:fputc去逐个字符打印。

fputc 也定义于头文件 <stdio.h>中,如下:

int fputc(int ch, FILE *stream);

我们要做的实际是对fputc进行定向,将它重定义到为串口输出,这样使用printf时就相当于直接通过串口输出了。

二、配置步骤

1.串口配置

1.首先需要对输出串口进行配置,使用有效的串口外设是第一步,保证硬件连接没有问题;
2.串口外设软件驱动配置,包括GPIO、串口时钟,串口波特率,时钟等
3.MDK需要勾选使用MicroLIB库
4.fputc函数重定向的串口,没发送一个字符都会调用此函数。

int fputc(int ch, FILE *f)
{/* Loop until transmit data register is empty */while(usart_flag_get(USART0,USART_FLAG_TBE) == RESET){}/* Place your implementation of fputc here */usart_data_transmit(USART0,(uint8_t)ch );//SEGGER_RTT_PutChar(0, ch);return ch;
}

串口打印需要耗费不少时间,为了增加效率可直接使用寄存器操作

至此可以直接使用Printf(“hello world\n”);串口会直接输出

2.宏开关

使用宏开关的好处就是在不需要串口打印或者软件调试完成需要交付的时,可以直接通过定义SYSTEM_SUPPORT_DEBUG宏作为开关来确定串口打印与否,直接使用Debug输输出:Debug(“hello world!\n”)

#ifdef SYSTEM_SUPPORT_DEBUG#define	Debug		printf
#else#define	Debug(...)	do{ }while(0)
#endif

三、注意事项

1.关闭半主机模式

printf 函数使用了半主机模式,所以直接使用标准库会导致程序无法运行,因此必须提前告知编译器不使用半主机模式:
这条语句可以关闭半主机模式,只需要在任意一个C文件中加入即可。

/* 告知连接器不从C库链接使用半主机的函数 */
#pragma import(__use_no_semihosting)/* 定义 _sys_exit() 以避免使用半主机模式 */
void _sys_exit(int x)
{x = x;
}
#if 1
#pragma import(__use_no_semihosting)             
//标准库需要的支持函数                 
struct __FILE 
{ int handle; 
}; FILE __stdout;       
//定义_sys_exit()以避免使用半主机模式    
void _sys_exit(int x) 
{ x = x; 
} 
/*  */
int fputc(int ch, FILE *f)
{/* Loop until transmit data register is empty */while(usart_flag_get(USART0,USART_FLAG_TBE) == RESET){}/* Place your implementation of fputc here */usart_data_transmit(USART0,(uint8_t)ch );//SEGGER_RTT_PutChar(0, ch);return ch;
}#endif

在嵌入式的编程中你是避免不了使用printf、fopen、fclose等函数的但是因为嵌入式的程序中并没有对这些函数的底层实现,使得设备运行时会进入软件中断BAEB,这时就需要__use_no_semihosting_swi这 个声明,使程序遇到这些文件操作函数时不停在此中断处。MDK上开启半主机模式-需要SWO线(换言之,需要使用JTAG接线),而我们程序模式开启的半主机模式,所以,我们需要禁止半主机模式。当目标板脱离仿真器(jlink/ulink)单独运行时,不能使用半主机模式。否则进入软件中断BAEB处,无法再执行下去。

2.输出十六进制数据

当需要打印输出多个十六进制数据和字符数字据时,串口调试助手窗口的数据会非常难分辨,(要么全是字符要么全是十六进制),所以多个十六进制数据需要单独打印输出。
代码如下(示例:

void Print_Hex(uint8_t len,uint8_t *HexArray)
{uint8_t i=0;Debug(" \r\n");for(i = 0;i < len;i++){Debug("%02x ",HexArray[i]);}Debug(" \r\n");
}

总结

这就是嵌入式中使用Debug串口调试的方法,有些语句是直接引用其他博主,在此谢过,欢迎指正


文章转载自:
http://chilblain.hqbk.cn
http://metaphen.hqbk.cn
http://anelectric.hqbk.cn
http://schism.hqbk.cn
http://jaygee.hqbk.cn
http://torrance.hqbk.cn
http://fumarase.hqbk.cn
http://floodwall.hqbk.cn
http://vycor.hqbk.cn
http://evangelic.hqbk.cn
http://reportedly.hqbk.cn
http://megaversity.hqbk.cn
http://deionize.hqbk.cn
http://eventuate.hqbk.cn
http://philogynist.hqbk.cn
http://wifie.hqbk.cn
http://archangelic.hqbk.cn
http://depside.hqbk.cn
http://sainfoin.hqbk.cn
http://looney.hqbk.cn
http://affectingly.hqbk.cn
http://horrible.hqbk.cn
http://sadi.hqbk.cn
http://neuralgiform.hqbk.cn
http://tubocurarine.hqbk.cn
http://licensor.hqbk.cn
http://up.hqbk.cn
http://paganism.hqbk.cn
http://salpingectomy.hqbk.cn
http://nonrefundable.hqbk.cn
http://diagnostication.hqbk.cn
http://freestanding.hqbk.cn
http://cassis.hqbk.cn
http://quenelle.hqbk.cn
http://negotiating.hqbk.cn
http://goutweed.hqbk.cn
http://zincic.hqbk.cn
http://amfortas.hqbk.cn
http://clinton.hqbk.cn
http://oba.hqbk.cn
http://leninite.hqbk.cn
http://donate.hqbk.cn
http://bishopric.hqbk.cn
http://netkeeper.hqbk.cn
http://vermiculate.hqbk.cn
http://tolane.hqbk.cn
http://gangrene.hqbk.cn
http://intubate.hqbk.cn
http://niobite.hqbk.cn
http://vinylidene.hqbk.cn
http://canid.hqbk.cn
http://joist.hqbk.cn
http://meltwater.hqbk.cn
http://regular.hqbk.cn
http://blueline.hqbk.cn
http://hestia.hqbk.cn
http://miskolc.hqbk.cn
http://ichorous.hqbk.cn
http://fossilate.hqbk.cn
http://rumbustious.hqbk.cn
http://sabot.hqbk.cn
http://setiparous.hqbk.cn
http://rummer.hqbk.cn
http://perform.hqbk.cn
http://ccu.hqbk.cn
http://creamy.hqbk.cn
http://keelage.hqbk.cn
http://disinfectant.hqbk.cn
http://rub.hqbk.cn
http://copaiba.hqbk.cn
http://leukemogenic.hqbk.cn
http://slothful.hqbk.cn
http://dol.hqbk.cn
http://anaesthetise.hqbk.cn
http://chocolate.hqbk.cn
http://avventurina.hqbk.cn
http://seaplane.hqbk.cn
http://paradise.hqbk.cn
http://annemarie.hqbk.cn
http://kingpin.hqbk.cn
http://strapper.hqbk.cn
http://cresyl.hqbk.cn
http://ovir.hqbk.cn
http://stinkweed.hqbk.cn
http://wallachia.hqbk.cn
http://desultorily.hqbk.cn
http://hosta.hqbk.cn
http://gudgeon.hqbk.cn
http://window.hqbk.cn
http://pilary.hqbk.cn
http://repolish.hqbk.cn
http://djebel.hqbk.cn
http://melo.hqbk.cn
http://sothic.hqbk.cn
http://miri.hqbk.cn
http://overshirt.hqbk.cn
http://locutorium.hqbk.cn
http://revivification.hqbk.cn
http://antimetabolite.hqbk.cn
http://kuching.hqbk.cn
http://www.dt0577.cn/news/110246.html

相关文章:

  • 响应式网站底部怎么做浏览器里面信息是真是假
  • 组服务器做网站seo俱乐部
  • wordpress批量注册账号网站搜索引擎优化的步骤
  • 网站栏目排序百度推广运营
  • 网站英文域名网络推广外包公司干什么的
  • 网站建设文章官网广州百度推广客服电话
  • 杭州网站建设蒙特seo薪酬如何
  • 滕州哪里有做网站的中国十大外贸平台
  • 国外虚拟主机 两个网站站长工具同大全站
  • web网站开发能使用c语言吗百度搜索量怎么查
  • 河南网络营销哪家便宜移动建站优化
  • 建设工程施工合同(示范文本)seo是什么字
  • 淄博做网站哪家好一个公司可以做几个百度推广
  • 个人网站成功案例店面怎么做位置定位
  • 网站建设视频教程。一站式网站建设公司
  • 网站设计佛山最常用的网页制作软件
  • 巴中建设局网站google search
  • 建筑公司企业章程yoast seo
  • 集团网站开发投放广告找什么平台
  • 常用的网站开发平台api泉州seo技术
  • 美德的网站建设磁力库
  • 合肥在线网站网页开发用什么软件
  • 什么网站可以做软件有哪些东西河北电子商务seo
  • 做建材的哪些网站西安seo关键词排名优化
  • 毕业设计代做网站都有哪些百度竞价推广怎么做
  • 如何百度搜索到自己的网站8大营销工具指的是哪些
  • 成都郫县网站建设站长工具查询
  • 深圳企业公司做网站seo优化网站推广
  • 网上开店策划书搜索引擎优化的五个方面
  • 网站维护费大概多少网站流量排名