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

微同步网站网站数字签名

微同步网站,网站数字签名,导航网站的网站地图怎么做,站长之家排行榜本章将实现如下功能#xff1a;STM32通过串口和上位机对话#xff0c;STM32在收到上位机发过来的字符串后#xff0c;原原本本返回给上位机。 STM32 串口简介 串口作为MCU的重要外部接口#xff0c;同时也是软件开发重要的调试手段#xff0c;其重要性不言而喻。现在基本…本章将实现如下功能STM32通过串口和上位机对话STM32在收到上位机发过来的字符串后原原本本返回给上位机。 STM32 串口简介 串口作为MCU的重要外部接口同时也是软件开发重要的调试手段其重要性不言而喻。现在基本上所有的MCU都会带有串口STM32自然也不例外。 通过USB串口和电脑通信 串口最基本的设置就是波特率的设置。只要开启了串口时钟设置相应IO口的模式然后配置一下波特率数据位长度奇偶校验位等信息就可以使用。 串口时钟使能。串口作为STM32的一个外设其时钟由外设时钟使能寄存器控制串口1是在APB2ENR寄存器的第14位。除了串口1的时钟使能在APB2ENR寄存器其它串口的时钟使能位都在APB1ENR寄存器而APB2的频率一般是APB1的一倍。串口复位。当外设出现异常的时候可以通过复位寄存器里面的对应位设置实现该外设的复位然后重新配置这个外设让其重新工作。一般在系统刚开始配置外设的时候都会先执行复位该外设的操作。 串口1的复位设置位在APB2RSTR的第14位通过向该位写1复位串口1写0结束复位。 串口设置的一般步骤 串口时钟使能GPIO时钟使能。设置引脚复用器映射调用GPIO_PinAFConfig函数。GPIO初始化设置要设置模式为复用功能。串口参数初始化设置波特率字长奇偶校验等参数。开启中断并且初始化NVIC使能中断。使能串口。编写中断处理函数函数名格式为USART1IRQHandler。 在HAL库中串口相关的函数和定义主要在文件stm32f1xx_hal_uart.c和stm32f1xx_hal_uart.h中。 串口参数初始化 串口作为STM32的一个外设HAL库为其配置了串口初始化函数。 HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart);typedef struct {USART_TypeDef *Instance; UART_InitTypeDef Init; uint8_t *pTxBuffPtr; uint16_t TxXferSize; __IO uint16_t TxXferCount;uint8_t *pRxBuffPtr; uint16_t RxXferSize; __IO uint16_t RxXferCount; DMA_HandleTypeDef *hdmatx; DMA_HandleTypeDef *hdmarx; HAL_LockTypeDef Lock; __IO HAL_UART_StateTypeDef gState; __IO HAL_UART_StateTypeDef RxState;__IO uint32_t ErrorCode; }UART_HandleTypeDef;Instance是结构体指针类型变量如果是串口11取值为 USART1 即可。 Init 是 UART_InitTypeDef 结构体类型变量它是用来设置串口的各个参数包括波特率停止位等。 typedef struct {uint32_t BaudRate; //波特率uint32_t WordLength; //字长uint32_t StopBits; //停止位uint32_t Parity; //奇偶校验uint32_t Mode; //收/发模式设置uint32_t HwFlowCtl; //硬件流设置uint32_t OverSampling; //过采样设置 }UART_InitTypeDef该结构体第一个参数 BaudRate 为串口波特率波特率可以说是串口最重要的参数了它用来确定串口通信的速率。第二个参数 WordLength 为字长可以设置为 8 位字长或者 9 位字长这里我们设置为 8 位字长数据格式 UART_WORDLENGTH_8B。第三个参数 StopBits 为停止位设置可以设置为 1 个停止位或者 2 个停止位这里我们设置为 1 位停止位 UART_STOPBITS_1。第四个参数 Parity 设定是否需要奇偶校验我们设定为无奇偶校验位。第五个参数 Mode 为串口模式可以设置为只收模式只发模式或者收发模式。这里我们设置为全双工收发模式。第六个参数 HwFlowCtl 为是否支持硬件流控制我们设置为无硬件流控制。第七个参数OverSampling 用来设置过采样为 16 倍还是 8 倍。 pTxBuffPtrTxXferSize 和 TxXferCount 三个变量分别用来设置串口发送的数据缓存指针发送的数据量和还剩余的要发送的数据量。而接下来的三个变量pRxBuffPtrRxXferSize 和RxXferCount 则是用来设置接收的数据缓存指针接收的最大数据量以及还剩余的要接收的数据量。 UART_HandleTypeDef UART1_Handler; //UART 句柄 UART1_Handler.InstanceUSART1; //USART1 UART1_Handler.Init.BaudRate115200; //波特率 UART1_Handler.Init.WordLengthUART_WORDLENGTH_8B; //字长为 8 位格式 UART1_Handler.Init.StopBitsUART_STOPBITS_1; //一个停止位 UART1_Handler.Init.ParityUART_PARITY_NONE; //无奇偶校验位 UART1_Handler.Init.HwFlowCtlUART_HWCONTROL_NONE; //无硬件流控 UART1_Handler.Init.ModeUART_MODE_TX_RX; //收发模式 HAL_UART_Init(UART1_Handler); //HAL_UART_Init()会使能 UART1函数HAL_UART_Init内部会调用串口使能函数使能相应串口所以调用了该函数之后就不需要重复使能串口了。 在调用初始化函数HAL_UART_Init内部会先调用MSP初始化回调函数进行MCU相关初始化函数为 void HAL_UART_MspInit(UART_HandleTypeDef *huart);该函数内部用来编写IO口初始化时钟使能以及NVIC配置。 使能串口和GPIO口时钟 要使用串口必须使能串口时钟和使用到的GPIO口时钟。 例如我们要使用串口 1所以我们必须使能串口 1 时钟和 GPIOA 时钟串口 1 使用的是 PA9 和 PA10。 __HAL_RCC_USART1_CLK_ENABLE(); //使能 USART1 时钟 __HAL_RCC_GPIOA_CLK_ENABLE(); //使能 GPIOA 时钟GPIO口初始化设置以及复用映射配置 在HAL库中IO口初始化参数设置和复用映射配置是在函数HAL_GPIO_Init中一次性完成的。 GPIO_Initure.PinGPIO_PIN_9; //PA9 GPIO_Initure.ModeGPIO_MODE_AF_PP; //复用推挽输出 GPIO_Initure.PullGPIO_PULLUP; //上拉 GPIO_Initure.SpeedGPIO_SPEED_FREQ_HIGH; //高速 HAL_GPIO_Init(GPIOA,GPIO_Initure); //初始化 PA9 GPIO_Initure.PinGPIO_PIN_10; //PA10 GPIO_Initure.ModeGPIO_MODE_AF_INPUT; //模式要设置为复用输入模式 HAL_GPIO_Init(GPIOA,GPIO_Initure); //初始化 PA10开启串口相关中断配置串口中断优先级 HAL库中定义了一个使能串口中断的标识符__HAL_UART_ENABLE_IT。 使能接收完成中断 __HAL_UART_ENABLE_IT(huart,UART_IT_RXNE);第一个参数为串口句柄第二个参数为要开启的中断类型值。 HAL_NVIC_EnableIRQ(USART1_IRQn); //使能USART1中断通道 HAL_NVIC_SetPrioority(USART1_IRQn,3,3); //抢占优先级3子优先级3.编写中断服务函数 void USART1_IRQHandler(void) ;串口数据接收和发送 STM32F1 的发送与接收是通过数据寄存器 USART_DR 来实现的这是一个双寄存器包含了 TDR 和 RDR。当向该寄存器写数据的时候串口就会自动发送当收到数据的时候也是存在该寄存器内。 HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
http://www.w-s-a.com/news/848186/

相关文章:

  • 在建设厅网站上查询注销建造师查域名是否注册
  • 企业网站推广方案策划公司网站在国外打开很慢使用cdn好还是国外租用服务器好
  • 龙华o2o网站建设百度不收录什么网站吗
  • 模板搭建网站百度信息流推广
  • 移动端网站制作模板自己做的网站点击赚钱
  • 网站站长如何赚钱wordpress抓取别人网站
  • 做网站媒体专门做产品定制的网站
  • 公司企业网站建设步骤免费asp网站模板
  • 台州企业网站搭建价格做留言的网站
  • 西安网站建设q.479185700強高端网站设计定制公司
  • 网站设计是平面设计吗音频文件放到网站空间里生成链接怎么做
  • seo是对网站进行什么优化可以在哪些网站做翻译兼职
  • 南宁seo网站推广服务网站建设客户分析
  • 网站属于什么公司甜品售卖网站网页设计
  • 如何在宝塔中安装wordpressseo1888网站建设
  • 网站系统cms湖南平台网站建设制作
  • 美团网站怎么做未备案网站加速
  • 通用cms网站wordpress可以商用
  • 阳江网络问政平台 周报济南seo公司案例
  • 重庆聚百思网站开发网络市场调研
  • seo工具共享网站敬请期待的英语
  • 最好看免费观看高清大全中国移动网络优化做什么的
  • 网站开发的步骤医院网站建设细节
  • 阿雷网站建设wordpress lucene
  • seo做多个网站建筑公司企业标语
  • 各大网站收录查询汕尾手机网站设计
  • 东莞网站平台费用58同城推广能免费做网站吗
  • 网站建设的组织机构做博客网站赚钱吗
  • 移动网站建设的前期规划内容南阳网站备案
  • 天津公司网站建设公司哪家好网站建设评估