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

云建网站去国外做外卖网站好

云建网站,去国外做外卖网站好,莆田网站建设网,wordpress自动刷评论引言 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.hkea.cn/news/14337038/

相关文章:

  • 安徽网站建设整体策划方案发布网站搭建教程
  • 沈阳设计网站茂名专业做网站
  • 网站建设的需要是什么江阴公司企业网站建设
  • 最新互联网项目平台网站wordpress 会员推广
  • 广州学校论坛网站建设购买网站域名空间
  • 建立网站用什么软件造一个官方网站
  • 网站运营需要 做哪些工作公司网站怎么申请怎么注册
  • 顺德网站建设价位潍坊网站推广
  • 怎么查找网站后台个人网站怎么建
  • 就业网站建设方案个人做外贸的网站有哪些
  • 厅网站建设项目背景软件商城哪个好
  • 为什么要做外贸网站如何做好商务网站的运营怎么做
  • 上海建站价格桂林网站设计
  • 模块化html5网站开发做付费动漫网站
  • 网站建设常用英语wordpress问答功能
  • 网站如何做网页查询网站设计过程中需要注意的问题
  • 手机网站跳转代码凡客诚品 正品官网
  • 网站项目下载室内装修公司排行
  • 网站建设实验心得网站怎么做翻页
  • 湛江有网站的公司名称东莞市新闻头条
  • 专做商品折扣的网站鄂尔多斯 网站建设
  • 常德做网站公司佳城建站 网站
  • 合肥重点工程建设局网站要素的优化设计
  • 网站排名优化策略重庆卓光科技有限公司
  • 如何在虚拟空间上做多个网站制作一个自适应网站源码
  • 邳州建设银行招聘网站WordPress搭建聊天室
  • 网站界面设计套题好创意网站有哪些方面
  • 重庆价格低建设网站公司网站怎么做跳转链接
  • 网站开发和美工的区别网站建设情况存在问题
  • 网站建设 交单流程狗和女人做的网站