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

昆明哪里做网站浙江住房城乡建设厅网站首页

昆明哪里做网站,浙江住房城乡建设厅网站首页,wordpress查资料,牟平建设企业网站本文中介绍USART编程涵盖了三种主要方法#xff0c;详细介绍STM32F407微控制器结合HAL库#xff0c;通过UART的查询方式来实现一个实用的密码验证程序。提示用户键入一个字符作为密码。只有当用户精准地输入字符6时#xff0c;系统才会反馈“密码正确”的确认信息。反之详细介绍STM32F407微控制器结合HAL库通过UART的查询方式来实现一个实用的密码验证程序。提示用户键入一个字符作为密码。只有当用户精准地输入字符6时系统才会反馈“密码正确”的确认信息。反之若输入的字符非6则会立即显示“密码错误请重新输入”的提示。 一、USART编程主要三种方法 1. 查询方式 查询方式是最基础、最简单的UART编程方法。其基本原理是主程序通过不断查询UART的状态寄存器以确定是否可以进行数据的发送或接收。 发送数据在发送数据之前程序可以首先检查TDR寄存器是否为空即发送缓冲区是否空闲。如果TDR为空则可以将数据写入TDR寄存器并等待发送完成通常通过查询相关状态位来判断。为了简化编程也可以先写入数据然后再检查发送状态。接收数据在接收数据时程序需要不断查询RDR寄存器是否为非空即接收缓冲区是否有数据。如果RDR非空则可以读取RDR寄存器中的数据并进行相应的处理。 查询方式的优点是编程简单、直观但缺点是CPU利用率较低因为主程序需要不断轮询UART状态寄存器。 2. 中断方式 中断方式是一种更加高效的UART编程方法。它利用中断机制在UART状态发生变化时自动触发中断处理函数从而减轻CPU的负担。 发送数据在发送数据时程序可以配置UART以在发送缓冲区空TXE时产生中断。在TXE中断处理函数中程序从发送缓冲区中取出一个数据并写入TDR寄存器。当TDR中的数据发送完成后UART会再次触发TXE中断程序可以继续发送下一个数据。接收数据在接收数据时程序可以配置UART以在接收缓冲区有数据RXNE时产生中断。在RXNE中断处理函数中程序读取RDR寄存器中的数据并将其存储到接收缓冲区中。如果接收缓冲区未满则UART会继续接收数据并触发RXNE中断。 中断方式的优点是CPU利用率高、实时性好但缺点是编程相对复杂需要处理中断优先级和中断嵌套等问题。 3. DMA方式 DMA方式是一种更加高级的UART编程方法。它利用DMA控制器在UART和内存之间直接传输数据无需CPU的参与。 发送数据在发送数据时程序可以将发送缓冲区的地址和长度配置给DMA控制器并启动DMA传输。DMA控制器会自动从发送缓冲区中读取数据并写入UART的TDR寄存器。当TDR中的数据发送完成后DMA控制器会自动从发送缓冲区中读取下一个数据并继续发送。整个过程无需CPU的干预。接收数据在接收数据时程序可以将接收缓冲区的地址和长度配置给DMA控制器并启动DMA接收。DMA控制器会自动从UART的RDR寄存器中读取数据并存储到接收缓冲区中。当接收缓冲区满或接收到特定数量的数据时DMA控制器可以触发一个中断或事件通知CPU进行后续处理。 DMA方式的优点是数据传输效率高、CPU负担轻但缺点是编程相对复杂需要了解DMA控制器的配置和使用方法。 二、USART 查询方式具体实现 下面介绍STM32F407 HAL库下的UART查询方式编程。 在STM32F407微控制器上通过HAL库使用UART的查询方式来实现一个简单的密码验证程序程序将提示用户输入一个字符作为密码只有当用户输入字符6时才会显示密码正确“The password is correct”否则将提示密码错误重新输入“The password is incorrect, please re-enter it”并允许用户重新输入。 0.开发环境 硬件正点原子探索者 V3 STM32F407开发板 单片机STM32F407ZGT6 Keil版本5.32 STM32CubeMX版本6.9.2 STM32Cube MCU Packges版本STM32F4xx_DFP.2.14.0 串口USART1(PA9,PA10) 1.STM32CubeMX配置 参考利用STM32 HAL库实现USART串口通信并通过printf重定向输出“Hello World“ 2.编写主程序 在生成的项目基础上编写主程序main.c。 int main(void) {/* USER CODE BEGIN 1 */char c;/* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */HAL_UART_Transmit(huart1, Please enter a char for password: \r\n, strlen(Please enter a char for password: \r\n), 1000);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */while (HAL_OK ! HAL_UART_Receive(huart1, c, 1, 100));if(6c){HAL_UART_Transmit(huart1, The password is correct\r\n, strlen(The password is correct\r\n), 1000);}else{HAL_UART_Transmit(huart1, The password is incorrect, please re-enter it\r\n, strlen(The password is incorrect, please re-enter it\r\n), 1000);};}/* USER CODE END 3 */ } 3.运行结果 串口打印Please enter a char for password: 只有当用户输入字符6时才会显示“The password is correct”否则将提示“The password is incorrect, please re-enter it”并允许用户重新输入。 下一篇再来介绍中断和DMA方式。
http://www.hkea.cn/news/14512349/

相关文章:

  • 汕头搭建建站属于我的网页制作平台的是
  • 传统网站建设 成本网站建设的品牌
  • vs网站开发 怎么运行郑州信盈达嵌入式培训
  • 衡水做网站推广php做网站中下一步按钮
  • 国内设计师交流网站wordpress文章显示字数
  • 个人网站导航模版宁波网站建设建站系统
  • 网站建设公司现状网站建站专家
  • 网站没做好能不能备案wordpress 结构解析
  • 天津住房与城乡建设厅网站首页一家公司做两个网站吗
  • 外贸站seo如何不备案建网站
  • 上海门户网站制作公司怎样在百度发广告贴
  • 自己做网站教学视频教程大连金石滩
  • 武胜网站建设seo教程技术整站优化
  • 建瓯企业网站建设资源库网站开发
  • 最好的网站建设公司排名珠海企业建站程序
  • 南京cms模板建站淘宝优惠券网站建设
  • 墙纸 html 网站模板简单学校网站模板
  • 企业展示网站建设需要做什么手机彩票网站开发
  • 杨浦科技网站建设招聘平面设计
  • 我的世界有什么做的视频网站提升学历正规渠道
  • 注册公司的网站大学生网页设计作业 案例
  • 做网站用哪种语言怎么进入公众号后台
  • 青岛网站制作机构荣县网站建设
  • 网站建设公司排行营销网站流程与步骤
  • 电子商务网站建设的阶段化分析网络营销推广的目的是什么
  • 西安房产网站大全庆阳网站建设推广
  • 专业的网站制作公司地址大连工业大学是一本还是二本
  • 东莞市国外网站建设报价虚拟机做的网站怎么让外网访问不了
  • 厦门网站建设价格xm37有没有专门做飞卢小说盗版的网站
  • 网站文字设计临沧网站搭建