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

网站备案在哪查下载微信app

网站备案在哪查,下载微信app,appcms程序怎么做网站,学设计的网站有哪些内容【STM32笔记】HAL库UART串口配置及重定向&#xff08;解决接收中断与scanf不能同时工作的问题&#xff09; 首先 要使用printf和scanf 必不可少的就是 #include <stdio.h>这里需要做的就是配置单片机的UART 并且使其能够被printf和scanf调用 打开异步工作模式 并且选择…

【STM32笔记】HAL库UART串口配置及重定向(解决接收中断与scanf不能同时工作的问题)

首先 要使用printf和scanf 必不可少的就是

#include <stdio.h>

这里需要做的就是配置单片机的UART 并且使其能够被printf和scanf调用

在这里插入图片描述
打开异步工作模式 并且选择同时收发 配置好波特率 停止位 校验位即可

最简单的重定向函数如下:

#pragma import(__use_no_semihosting_swi)
struct __FILE { int handle; /* Add whatever you need here */ };
FILE __stdout;
FILE __stdin;//串口打印配置函数 printf
int fputc(int ch, FILE *f)  
{HAL_UART_Transmit(&huart2,(uint8_t *)&ch,1,0xFFFF);return ch;
}
//串口接收函数 scanf
int fgetc(FILE *f)
{uint8_t ch = 0;HAL_UART_Receive(&huart2,&ch,1,0xFFFF);return ch;
}

这里用的收发函数均为阻塞收发模式

为了进行随时的接收 则需要引入接收中断监控(非阻塞)
在NVIC里开启中断
在这里插入图片描述
同时覆写接收中断回调函数

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if(huart==&huart2){		HAL_UART_Transmit(&huart2,&RxBuffer,1,0xFFFF);HAL_UART_Receive_IT(&huart2,&RxBuffer,1);}
}

而在使用前 需要先开启接收中断

故可以在UART初始化后加上一句:

/* USER CODE BEGIN USART2_Init 2 */HAL_UART_Receive_IT(&huart2,&RxBuffer,1);/* USER CODE END USART2_Init 2 */

这里的RxBuffer为全局变量 别忘了定义 一般定义uint8_t即可

uint8_t RxBuffer=0;

同样 在回调函数中 实现的基本功能就是将发送的数据返回来
在这里插入图片描述
如果这样配置的话 则会导致初始化后 由于开启了中断接收 故不会执行scanf中的阻塞发送语句 执行时会直接返回BUSY标志

所以只需要修改scanf即可

//串口接收函数 scanf
int fgetc(FILE *f)
{uint8_t ch = 0;HAL_UART_AbortReceive_IT(&huart2);HAL_UART_Receive(&huart2,&ch,1,0xFFFF);HAL_UART_Receive_IT(&huart2,&RxBuffer,1);return ch;
}

先关闭接收中断 然后等待接收 最后再开启中断 最后一项时间是等待时间

在使用scanf时 即会进行阻塞接收 若一直接收不到 则一直等待

这里只能接收一个数据长度 若想接收多个 则需要重新配置 比如:

//串口接收函数 scanf
int fgetc(FILE *f)
{int ch = 0;HAL_UART_AbortReceive_IT(&huart2);HAL_UART_Receive(&huart2,(uint8_t *)&ch,4,0xFFFF);HAL_UART_Receive_IT(&huart2,&RxBuffer,1);return ch;
}

但int类型最大也就4个字节长度了

也可以用数组的方式进行接收 但调用的时候只能用全局变量数组

还有就是 别忘了勾选MicroLIB库
在这里插入图片描述
或者在重定向前添加以下代码 以屏蔽报错

void _sys_exit(int x) 
{ x = x; 
} 
void _ttywrch(int ch)
{ch = ch;
}
http://www.yayakq.cn/news/716601/

相关文章:

  • 手机网站用二级目录做的弊端正规的招聘网站
  • c 网站开发模式网络设计什么学历一般
  • 微网站 微官网的区别吗欧亚快递100
  • 白石龙做网站同创企业网站源码
  • 网站建设 福步电商平台定制开发公司
  • 企业网站的宣传功能体现在().苏州企业网站制作多少钱
  • 从旁鼓动人做某事 网站如何分析网站开发语言
  • 翻书效果的网站软件开发工程师薪资水平
  • 网站推广的方式浏览器网页打不开怎么解决
  • 外国 网站模板c 网站建设可视化实现
  • 重庆制作网站软件杭州家装设计公司排名榜
  • 山东省城乡与住房建设厅网站首页网站建设需要什么岗位的人
  • 贵阳做网站好的公司有哪些周口市网站建设
  • 怎么建com的网站wordpress 建表
  • 河东区建设局网站国际电商平台排行榜前十名
  • 做网站多少钱保定遨游免费宁波市北仑区建设局网站
  • 怎么在网站挂黑链接手机版网站有必要吗
  • 我想给图书网站做代理网页前端开发和后端开发
  • 银川网站建设公司名单西宁网站建设价格低
  • 网站建设培训目标软文推广策划方案
  • 如何在网站做直播间营销活动管理系统
  • 甘肃企业建站系统费用微信小程序制作教程视频
  • 宁波网站建设在哪里会计题库网站怎么做
  • 帮别人做网站自己为什么会被抓免费建立自己的网站代理
  • 基于h5的wap网站开发建设一个网站报价
  • 做印刷的网站有哪些焊工培训
  • 1.简述网站建设流程如何做学校的网站设计
  • 竞赛作品发表网站怎么做做校招的网站有哪些
  • 网页编辑与网站编辑新手学网站建设
  • 东莞网站设计电话有没有傻瓜式建设网站