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

云南做网站公司佛山大良网站建设招聘

云南做网站公司,佛山大良网站建设招聘,外贸网站建设定制,天津雍鑫建设投资集团网站【 声明#xff1a;版权所有#xff0c;欢迎转载#xff0c;请勿用于商业用途。 联系信箱#xff1a;feixiaoxing 163.com】 前面学习103和407的时候#xff0c;当时学过串口的收发。不过当时使用的主要是阻塞的方式。这一次#xff0c;我们看下应该怎么利用中断的形式进…【 声明版权所有欢迎转载请勿用于商业用途。 联系信箱feixiaoxing 163.com】 前面学习103和407的时候当时学过串口的收发。不过当时使用的主要是阻塞的方式。这一次我们看下应该怎么利用中断的形式进行数据的收发。不仅如此我们还可以看下怎么把收到的数据放在一起当成一个完整的命令去处理。 1、基本串口信息定义 这边的串口主要还是利用a9、a10来实现数据的收发其中a9负责数据的发送a10负责数据的接收。除此之外数据是采用中断的形式进行处理的。 #define DEBUG_USART USART1 #define DEBUG_USART_CLK_ENABLE() __USART1_CLK_ENABLE();#define DEBUG_USART_RX_GPIO_PORT GPIOA #define DEBUG_USART_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() #define DEBUG_USART_RX_PIN GPIO_PIN_10 #define DEBUG_USART_RX_AF GPIO_AF7_USART1#define DEBUG_USART_TX_GPIO_PORT GPIOA #define DEBUG_USART_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() #define DEBUG_USART_TX_PIN GPIO_PIN_9 #define DEBUG_USART_TX_AF GPIO_AF7_USART1#define DEBUG_USART_IRQHandler USART1_IRQHandler #define DEBUG_USART_IRQ USART1_IRQn 2、串口的初始化 串口的初始化这边基本上就是八股文基本上按照套路下就可以了。一般就是配置时钟、配置gpio、配置uart、配置中断。对于我们来说最重要的baudrate也就是波特率就是在这里配置的。 void DEBUG_USART_Config(void) {GPIO_InitTypeDef GPIO_InitStruct;RCC_PeriphCLKInitTypeDef RCC_PeriphClkInit;DEBUG_USART_RX_GPIO_CLK_ENABLE();DEBUG_USART_TX_GPIO_CLK_ENABLE();RCC_PeriphClkInit.PeriphClockSelection RCC_PERIPHCLK_USART1;RCC_PeriphClkInit.Usart16ClockSelection RCC_USART16CLKSOURCE_D2PCLK2;HAL_RCCEx_PeriphCLKConfig(RCC_PeriphClkInit);DEBUG_USART_CLK_ENABLE();GPIO_InitStruct.Pin DEBUG_USART_TX_PIN;GPIO_InitStruct.Mode GPIO_MODE_AF_PP;GPIO_InitStruct.Pull GPIO_PULLUP;GPIO_InitStruct.Speed GPIO_SPEED_FREQ_HIGH;GPIO_InitStruct.Alternate DEBUG_USART_TX_AF;HAL_GPIO_Init(DEBUG_USART_TX_GPIO_PORT, GPIO_InitStruct);GPIO_InitStruct.Pin DEBUG_USART_RX_PIN;GPIO_InitStruct.Alternate DEBUG_USART_RX_AF;HAL_GPIO_Init(DEBUG_USART_RX_GPIO_PORT, GPIO_InitStruct); UartHandle.Instance DEBUG_USART;UartHandle.Init.BaudRate 115200;UartHandle.Init.WordLength UART_WORDLENGTH_8B;UartHandle.Init.StopBits UART_STOPBITS_1;UartHandle.Init.Parity UART_PARITY_NONE;UartHandle.Init.Mode UART_MODE_TX_RX;UartHandle.Init.HwFlowCtl UART_HWCONTROL_NONE;UartHandle.Init.OverSampling UART_OVERSAMPLING_16;UartHandle.Init.OneBitSampling UART_ONEBIT_SAMPLING_DISABLED;UartHandle.AdvancedInit.AdvFeatureInit UART_ADVFEATURE_NO_INIT;HAL_UART_Init(UartHandle);HAL_NVIC_SetPriority(DEBUG_USART_IRQ, 0, 0);HAL_NVIC_EnableIRQ(DEBUG_USART_IRQ);__HAL_UART_ENABLE_IT(UartHandle,UART_IT_RXNE); } 3、函数重定向 对于喜欢用getchar、printf进行数据收发的同学一般还需要实现一下fputc、fgetc这两个函数。实现了这两个函数后续就可以使用getchar和printf了。 void Usart_SendString(uint8_t *str) {unsigned int k0;do {HAL_UART_Transmit( UartHandle,(uint8_t *)(str k) ,1,1000);k;} while(*(str k)!\0);}int fputc(int ch, FILE *f) {HAL_UART_Transmit(UartHandle, (uint8_t *)ch, 1, 1000); return (ch); }int fgetc(FILE *f) { int ch;HAL_UART_Receive(UartHandle, (uint8_t *)ch, 1, 1000); return (ch); } 4、中断处理 配置好了uart属性部分下面就是中断处理。这里中断是一个数据、一个数据进行接收的实际处理的时候一般是进入中断之后循环接收数据直到没有新的数据收到为止。 extern uint8_t Rxflag; extern uint8_t ucTemp;void DEBUG_USART_IRQHandler(void) {if(__HAL_UART_GET_IT( UartHandle, UART_IT_RXNE ) ! RESET){ Rxflag1; HAL_UART_Receive(UartHandle, (uint8_t *)ucTemp, 1, 1000); }HAL_UART_IRQHandler(UartHandle); } 代码中Rxflag是标志位ucTemp代表实际接收到的数据。 5、接收数据实际处理 单个接收到的数据一般是没有办法直接处理的通常都是收集到一块来处理。处理结束的标志一般就是回车换行符或者是某个特殊的标志也可以的。 while (1){if(Rxflag){if (usRxCount sizeof(ucaRxBuf)){ucaRxBuf[usRxCount] ucTemp;}else{usRxCount 0;}if (ucTemp 0x0A) { HAL_UART_Transmit( UartHandle, (uint8_t *)ucaRxBuf,usRxCount,1000 );usRxCount 0;}Rxflag0;__HAL_UART_ENABLE_IT(UartHandle,UART_IT_RXNE); }} 这边做的比较简单整个while1部分是放在main函数里面的。如果Rxflag为1那么把接收到的数据放到ucaRxBuf里面。接着检查数据是不是0x0a也就是换行如果是就把数据发送回去。最后把Rxflag重新置0打开串口接收中断准备新的数据进来。 大家如果做的复杂一点数据上面可以用queue的形式来处理函数也可以抽象出来实现部分做成parse command的形式这样处理起来就会简单的多。另外数据接收部分要尽快打开中断。 6、测试和验证 测试就比较简单了直接把代码编译、下载后利用ATK-XCOM上位机打开串口输入123、abc这样的内容看看有没有回显就知道代码对不对了。
http://www.hkea.cn/news/14316103/

相关文章:

  • 网站要怎么创建门户网站的建设费用
  • 青岛做网站青岛做网站自学网站建设要多久
  • 广州天美展览公司网站新网站 蜘蛛
  • 外贸网站如何建站凡科网站后台在哪里.
  • 网站开发经验与教训范文免费申请网站
  • 定制网站开发方案ppt网站建设行业咨讯文章
  • 个人购物网站备案网站关键词调整 收录
  • 给客户建完美网站佛山网站建设哪个好
  • 网站推广工具 刷链接wordpress分页插件
  • 匿名聊天网站怎么做ordown wordpress
  • html做的宠物网站南召网站建设
  • 自适应网站怎么做wordpress主题手机版不显示侧边栏
  • 做土特产网站什么名字最好市网站建设公司
  • 网站建设是前端吗wordpress4.95
  • 北京赵公口网站建设苏州网站制作开发公司
  • 网站开发小图标WordPress怎么文章连号
  • 怎样用别人的网站做修改病句用html制作购物网站
  • 张家港外贸型网站建设灰色关键词快速排名
  • 北京公司的网站建设房子装修改造
  • c 创建一个网站怎么做wordpress不同尺寸图片大小
  • 公司建网站哪家柯城建设局网站
  • 一台网站服务器多少钱服务专业制作网页
  • 百度小程序还需要做网站吗wordpress5.0.2图集怎么发布
  • 网站上那些兼职网页怎么做的网站提交至google
  • 建设商务网站的理由中山市做网站的公司
  • 网站建设公司浩森宇特移动网站建设是什么
  • 知乎企业网站建设网站建设企
  • 杭州滨江的网站建设公司网站建设引入谷歌地图
  • 网站建设教学工作总结6uehtml wordpress
  • 网站建设经费保障如何申请百度竞价排名