stm32中阻塞模式和非阻塞模式 in blocking mode 与 in non-blocking mode区别
阻塞模式和非阻塞模式......
我的理解是:
阻塞模式就像是一个延时函数,当这个函数没处理完那么,所有的按照流程需要执行的代码都不会被执行,要等到这个延时完成,类似 平时看书上写的LED灯闪烁,用的delay()一样..
而非阻塞模式就像他定义的那样,一般用的是中断,执行这条语句的时候,开启相应的中断达到一定的条件才进行处理,这样不会影响到流程的执行.
我的理解就是,阻塞就是死等,非阻塞就是中断
可以参考
/**
* @brief Sends an amount of data in non blocking mode.
* @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01),
* the sent data is handled as a set of u16. In this case, Size must indicate the number
* of u16 provided through pData.
* @param huart Pointer to a UART_HandleTypeDef structure that contains
* the configuration information for the specified UART module.
* @param pData Pointer to data buffer (u8 or u16 data elements).
* @param Size Amount of data elements (u8 or u16) to be sent
* @retval HAL status
*/
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
/**
* @brief Sends an amount of data in blocking mode.
* @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01),
* the sent data is handled as a set of u16. In this case, Size must indicate the number
* of u16 provided through pData.
* @param huart Pointer to a UART_HandleTypeDef structure that contains
* the configuration information for the specified UART module.
* @param pData Pointer to data buffer (u8 or u16 data elements).
* @param Size Amount of data elements (u8 or u16) to be sent
* @param Timeout Timeout duration
* @retval HAL status
*/
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
————————————————
版权声明:本文为CSDN博主「liming0931」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liming0931/article/details/99721916
原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/11376725.html
- Spring boot自定义启动字符画(banner)
- 产品解析:Github Atom
- Docker+Jenkins持续集成环境(5): android构建与apk发布
- Docker+Jenkins持续集成环境(4):使用etcd+confd实现容器服务注册与发现
- 易企秀前端压缩源码分析与还原
- 关于 JS 拖拽功能的冲突问题及解决方法
- 使用 SVG 和 JS 创建一个由星形变心形的动画
- 如何使用 Bootstrap 搭建更合理的 HTML 结构
- Java遍历Map对象的四种方式
- java 线程public void run()中值如何返回
- Jackson与spring框架整合的坑
- spring shiro整合时自动注入的问题
- mybatis获取update的id
- 点击!AWD攻防解题技巧在此!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- django3 websockets
- 使用AccessibilityService实现自动遍历点赞功能
- Android自定义字母导航栏
- [-Flutter 自组篇-] 圆形进度条
- Flutter 滚动监听及实战appBar滚动渐变的实现
- Android 开机充电图标和充电动画效果
- 使用tea算法对数据进行加密
- Android实现页面翻转和自动翻转功能
- Android实现自定义手势和识别手势的功能
- android 使用okhttp可能引发OOM的一个点
- 到底有几个进程在运行
- Android中butterknife的使用与自动化查找组件插件详解
- Android生成条形码和二维码功能
- gettext msgfmt安装及po/mo文件编译转换
- Android实现底部带刻度的进度条样式