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

云建网站如何在百度做网站推广

云建网站,如何在百度做网站推广,网站页面设计合同,高新手机网站建设公司引言 C语言中经常使用printf来输出调试信息#xff0c;打印到屏幕。由于在单片机中没有屏幕#xff0c;但是我们可以重定向printf#xff0c;把数据打印到串口#xff0c;从而在电脑端接收调试信息。这是除了debug外#xff0c;另外一个非常有效的调试手段。 一、什么是pr…引言 C语言中经常使用printf来输出调试信息打印到屏幕。由于在单片机中没有屏幕但是我们可以重定向printf把数据打印到串口从而在电脑端接收调试信息。这是除了debug外另外一个非常有效的调试手段。 一、什么是printf的重定向 我们知道 C 语言中printf 函数默认输出设备是控制台如果要实现在串口或者 LCD 上显示必须重定义C语言标准库函数里调用的与输出设备相关的函数。比如使用 printf 输出到串口则需要将 fputc 里面的输出指向串口,这一过程就叫 重定向 。 二、怎么样重定向printf 那么如何让 STM32 使用 printf 函数呢很简单只需要将 fputc 里面的输出指向 STM32 串口即可fputc 函数有固定的格式我们只需要在函数内操作STM32串口即可。 2.1 配置microLIB 由于我们使用的开发环境或者说工具链是keil-MDK而在KEIL-MDK开发环境中本身是没有包含C语言的一些标准库函数如stdio.h这种文件等。        在KEIL-MDK开发环境中可以选择使用MicroLIB库。MicroLIB是一个高度优化的C库适用于嵌入式应用程序。它的特点是代码体积小但功能较少不支持某些ISO C特性。当然这里重定向printf要使用的库函数已经够用了。 我们可以直接在【魔法棒】中勾选上即可完成它的配置 2.2 重定向fputc函数寄存器实现 在使用MicroLIB库时需要重定向fputc函数。fputc函数的原型如下 int fputc(int ch, FILE* stream) { USART_SendChar(USART1, (uint8_t)ch); return ch; } 那么本次我们将printf重定向到串口上这里使用的串口是USART1只需要编写一个发送单字符数据的函数接着重新定义一下fputc函数即可实现printf的重定向。 也就是说只需要在usart.c中编写三个函数分别是串口的初始化、发送一个字符函数、fputc函数重写即可。 参考代码如下 1、usart.h #ifndef __USART_H #define __USART_H#include stm32f10x.h #include stdio.h// 初始化 void USART_Init(void);// 发送一个字符 void USART_SendChar(uint8_t ch);#endif 2、usart.c #include usart.h// 初始化 void USART_Init(void) {// 1. 开启GPIO时钟 PA9 PA10RCC-APB2ENR | RCC_APB2ENR_IOPAEN;RCC-APB2ENR | RCC_APB2ENR_USART1EN;// 2. 设置GPIO工作模式// PA9 TX 输出复用推挽输出 MODE-11 CNF-10// PA10 RX 输入浮空输入 MODE-00 CNF-01GPIOA-CRH | GPIO_CRH_MODE9;GPIOA-CRH | GPIO_CRH_CNF9_1;GPIOA-CRH ~GPIO_CRH_CNF9_0;GPIOA-CRH ~GPIO_CRH_MODE10;GPIOA-CRH ~GPIO_CRH_CNF10_1;GPIOA-CRH | GPIO_CRH_CNF10_0;// 3. 串口配置// 3.1 设置波特率USART1-BRR 0x271; // 115.2 Kpbs// 3.2 开启模块及收发使能USART1-CR1 | USART_CR1_UE;USART1-CR1 | USART_CR1_TE;USART1-CR1 | USART_CR1_RE;// 3.3 其他配置字长、奇偶校验、停止位USART1-CR1 ~USART_CR1_M;USART1-CR1 ~USART_CR1_PCE;USART1-CR2 ~USART_CR2_STOP; }// 发送一个字符 void USART_SendChar(uint8_t ch) {// 当发送的数据不为空时等待TXE为1则可以继续写入数据while ((USART1-SR USART_SR_TXE) 0){}// 发送一个字符USART1-DR ch; }// 重定向fputc函数 int fputc(int ch, FILE * file) {USART_SendChar((uint8_t)ch);return (int)ch; }3、main.c #include usart.hint main(void) {// 初始化USART_Init();// printfint a 100;printf(a %d, a);// 死循环保持状态while(1){ } }2.3 重定向fputc函数HAL库实现 然后我们在借助HAL库实现。其实也非常简单其在STM32CubeMX中需要进行的配置和前面串口通讯轮询案例的HAL库实现需要的配置是一样的因为本次作重定向主要就只是多重写一个fputc函数即STM32CubeMX软件自动生成代码后我们再在usart.c中添加重写fputc函数的代码即可非常简单。 所以这里附上前面HAL库实现的串口通讯轮询案例的文章链接可以直接去看看相关配置步骤USART_串口通讯轮询案例HAL库实现-CSDN博客https://blog.csdn.net/2301_79475128/article/details/145263748?spm1001.2014.3001.5502 然后根据上面所述原理这里直接给上添加到usart.c中的参考代码如下 /* USER CODE BEGIN 1 */int fputc(int ch, FILE * file) {HAL_UART_Transmit(huart1, (uint8_t *)ch, 1, 1000);return ch; }/* USER CODE END 1 */ 值得注意的是keil中要勾选上【microLIB】、代码中引入#includestdio.h 否则会提示找不到printf函数。 三、测试 编译以后我们烧录然后在串口助手中看效果 1、寄存器实现的测试 2、HAL库实现的测试 显然通过重定向printf我们可以通过printf将一些信息打印发送到电脑上使用串口助手进行查看。 以上便是本次文章的所有内容欢迎各位朋友在评论区讨论本人也是一名初学小白愿大家共同努力一起进步吧 鉴于笔者能力有限难免出现一些纰漏和不足望大家在评论区批评指正谢谢
http://www.ho-use.cn/article/10813982.html

相关文章:

  • wordpress个人网站天津网站建设费用
  • 替人做非法网站织梦的网站地图更新
  • 北京网站建设哪家便宜济源网站优化
  • 小企业建网站新浪微博网页版
  • 网站 设计公司 温州做公司网站详细步骤
  • 网站栏目变了怎么做跳转百度蜘蛛抓取网站模块
  • 二级域名网站建设规范商场设计公司
  • 义乌建设网站制作制作静态网站模板
  • 黑蒜东莞网站建设站长工具大全
  • 论坛程序做导航网站2022年进口博览会上海
  • 天蝎网站建设浙江省住房和城乡建设厅官网证件查询
  • 团购网站模板 免费邓州做网站
  • 站酷网站做vr网站
  • 机关网站建设创新舞阳网站建设
  • 长沙做网站的公司对比网站优化排名哪家好
  • 培训制作网站源码互联网app推广
  • 寻花问柳一家只做属于男人的网站特产网站建设策划书
  • 会网站建设如何找工作互联网营销行业
  • 平安网站建设工作总结国外空间
  • 郑州做网站公司yooker广告策划方案怎么做
  • 黑龙江省垦区建设协会网站建一个小型购物网站要有服务器
  • 需要网站建设企业建设网站哪里好
  • 张家港快速网站建设手机网页链接制作生成
  • 无锡网站优化价格vue大型网站开发吗
  • 用j2ee作的网站建设部网站投诉核查
  • asp在网站制作中的作用那个网站做租赁好
  • 甜品网站建设项目规划书翻译建设企业网站
  • 做淘宝的网站的多少钱公司网站建设怎么做
  • 个人网站名可以和别人一样吗北京商城网站开发公司
  • 服装图案素材网站php网站开发实例教程实验报告