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

wordpress 4.5seo全称英文怎么说

wordpress 4.5,seo全称英文怎么说,logo免费自动生成器app,深圳网站设计精选刻串口理论部分可看51部分:链接 数据帧 帧头(2字节,例如AA、BB) 数据长度(2字节) 数据 CRC16校验(2字节) 帧尾(2字节) 代码编写 串口一发送命令控制LED灯(PB5、PE5) LED灯、串口、…

串口理论部分可看51部分:链接

数据帧 = 帧头(2字节,例如AA、BB) + 数据长度(2字节)+ 数据 + CRC16校验(2字节) + 帧尾(2字节)

代码编写

串口一发送命令控制LED灯(PB5、PE5)

LED灯、串口、串口打印浮点数据、串口重定向配置

LED灯配置请看:链接

串口配置:

串口配置

配置中断NVIC(嵌套向量中断控制器)

配置中断NVIC

配置DMA:

配置DMA

Cube IDE中串口打印浮点数据配置方法(参考):进入“Project→Properties”;显示界面如下。按照图片中的设置完成即可!

打印浮点数配置

串口重定向配置:

uint8_t u_buf[256];	//usart.c,24行#include <stdio.h>	//usart.h,32行
extern uint8_t u_buf[256];	//usart.h,38行
#define printf(...)  HAL_UART_Transmit(&huart1, (uint8_t *)u_buf, sprintf((char*)u_buf, __VA_ARGS__), 0xffff)	//usart.h,39行

轮询方式

缺点:

    必须要等待数据发送完或者等待时间超时,代码才会往下走

    必须要等待数据接收到固定的字节长度,超时,代码才往下走

Cube IDE代码

mian.c

/* USER CODE BEGIN Includes */
#include <string.h>	//26行
#include <stdio.h>	//27
/* USER CODE END Includes *//* USER CODE BEGIN PV */
uint8_t UART_Recv[5];	//48行
char UART_Str[30];		//49行
/* USER CODE END PV *///参数1:UART 模块的配置信息的指针,参数2:数据缓冲区的指针,参数3:接收字节长度,参数4:接收超时时间(单位为毫秒)
HAL_UART_Receive(&huart1, UART_Recv, 4, 1000);	//接收数据函数
if(strcmp("LED1", (char *)UART_Recv) == 0)	//字符串比较函数
{HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);memset(UART_Recv,'\0',5);	//替换字符函数,常用于清除指定空间
}if(!strcmp("LED2", (char *)UART_Recv))	//字符串比较函数
{HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);memset(UART_Recv,'\0',5);
}sprintf(UART_Str, "%f\n", 666.6);
//参数1:UART 模块的配置信息的指针,参数2:发送的字符串或字符数组,参数3:发送字节长度,参数4:接收超时时间(单位为毫秒)
HAL_UART_Transmit(&huart1, (char *)UART_Str, strlen(UART_Str), 1000);	//发送数据
printf("xinzai\n");	//配置串口重定向后才可使用

中断(IT)方式

Cube IDE代码


HAL_UART_RxCpltCallback(huart);	//stm32f1xx_hal_uart.c,3660行//stm32f1xx_hal_uart.c,2619行
__weak void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)	//中断回调函数

main.c

/* USER CODE BEGIN Includes */
#include <string.h>	//26行
#include <stdio.h>	//27行
/* USER CODE END Includes *//* USER CODE BEGIN PV */
uint8_t UART_Recv_IT[5];	//48行
char UART_Str[30];	//49行
/* USER CODE END PV *//* USER CODE BEGIN 2 */
//参数1:UART 模块的配置信息的指针,参数2:数据缓冲区的指针,参数3:接收字节长度
HAL_UART_Receive_IT(&huart1, UART_Recv_IT, 4);	//串口中断接收函数,95行
/* USER CODE END 2 *///while函数里
sprintf(UART_Str, "%d\n", 666);	//102
HAL_UART_Transmit_IT(&huart1, UART_Str, strlen(UART_Str));	//串口中断发送函数,103
HAL_Delay(1000);	//104//151行开始
/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)	//串口中断接收触发函数
{if(huart == &huart1)	//判断传进来的串口是哪个{if(strcmp("LED1", (char *)UART_Recv_IT) == 0)	//字符串比较函数{HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);memset(UART_Recv_IT,'\0',5);	//替换字符函数,常用于清除指定空间}if(!strcmp("LED2", (char *)UART_Recv_IT))	//字符串比较函数{HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);memset(UART_Recv_IT,'\0',5);}//因为只能接受一次串口中断,所以在串口中断触发函数需要重新调用HAL_UART_Receive_IT(&huart1, UART_Recv_IT, 4);}
}
/* USER CODE END 4 */

空闲中断(IDLE) + DMA

不受接收字符长度影响,可以随意接收字符长度并判断

空闲状态:在多个字节传输结束后,通信线路将会维持高电平,这个状态称为空闲状态(没有数据传输时的空闲状态,数据传输刚结束的空闲状态)

空闲中断产生条件:在数据传输过程中,当CPU检测到通信线路处于空闲状态时,且空闲状态的持续时间大于一个字节传输时间时,空闲状态标志IDLE将由硬件置1,产生空闲中断

Cube IDE代码

//stm32f1xx_hal_uart.h,2710行
__weak void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)	//空闲中断接收回调函数

main.c

/* USER CODE BEGIN Includes */
#include <string.h>		//27行
/* USER CODE END Includes *//* USER CODE BEGIN PD */
#define RECV_Size 100	//37行
/* USER CODE END PD *//* USER CODE BEGIN 2 */
HAL_UARTEx_ReceiveToIdle_DMA(&huart1, UART_Recv_IDLE, RECV_Size);	//空闲中断接收函数,94行
//数据接收RECV_Size一半时会重新触发中断,需要关闭DMA接收中断使能
HAL_NVIC_DisableIRQ(DMA1_Channel5_IRQn);	//96行
/* USER CODE END 2 *///150行
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)	//空闲中断接收触发函数
{if(huart == &huart1)	//判断传进来的串口是哪个{if(strcmp("LED1", (char *)UART_Recv_IDLE) == 0)	//字符串比较函数{HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);memset(UART_Recv_IDLE,'\0',Size);	//替换字符函数,常用于清除指定空间}if(!strcmp("LED2ON", (char *)UART_Recv_IDLE))	//字符串比较函数{//HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, 0);memset(UART_Recv_IDLE,'\0',Size);}else if(!strcmp("LED2OFF", (char *)UART_Recv_IDLE)){HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, 1);memset(UART_Recv_IDLE,'\0',Size);}//因为只能接受一次串口中断,所以在串口中断触发函数需要重新调用HAL_UARTEx_ReceiveToIdle_DMA(&huart1, UART_Recv_IDLE, RECV_Size);}}

文章转载自:
http://concessively.c7622.cn
http://parturient.c7622.cn
http://divisional.c7622.cn
http://nathaniel.c7622.cn
http://vinum.c7622.cn
http://hemolysis.c7622.cn
http://cockleboat.c7622.cn
http://incertitude.c7622.cn
http://inspectress.c7622.cn
http://cryology.c7622.cn
http://positivist.c7622.cn
http://leechdom.c7622.cn
http://lobulation.c7622.cn
http://disintegration.c7622.cn
http://ombrology.c7622.cn
http://maladminister.c7622.cn
http://plutonic.c7622.cn
http://cupful.c7622.cn
http://hygienic.c7622.cn
http://fibrosis.c7622.cn
http://mesocranial.c7622.cn
http://detinue.c7622.cn
http://avertable.c7622.cn
http://vulnerary.c7622.cn
http://granophyre.c7622.cn
http://deferential.c7622.cn
http://ovation.c7622.cn
http://lunk.c7622.cn
http://attenuate.c7622.cn
http://deductive.c7622.cn
http://udometric.c7622.cn
http://notifiable.c7622.cn
http://forejudge.c7622.cn
http://goodby.c7622.cn
http://iron.c7622.cn
http://owly.c7622.cn
http://irritancy.c7622.cn
http://preventible.c7622.cn
http://hydrocephalic.c7622.cn
http://conservatorium.c7622.cn
http://connoisseurship.c7622.cn
http://brushability.c7622.cn
http://sortes.c7622.cn
http://truantry.c7622.cn
http://ct.c7622.cn
http://willingly.c7622.cn
http://maid.c7622.cn
http://malaguena.c7622.cn
http://reprocess.c7622.cn
http://enamelware.c7622.cn
http://technologist.c7622.cn
http://sylvestral.c7622.cn
http://foolscap.c7622.cn
http://keckle.c7622.cn
http://curate.c7622.cn
http://blest.c7622.cn
http://crenated.c7622.cn
http://tsamba.c7622.cn
http://whipgraft.c7622.cn
http://bearish.c7622.cn
http://unpenetrable.c7622.cn
http://delamination.c7622.cn
http://homoeothermic.c7622.cn
http://clogger.c7622.cn
http://daubster.c7622.cn
http://netkeeper.c7622.cn
http://nicotin.c7622.cn
http://halfbeak.c7622.cn
http://arcjet.c7622.cn
http://excitative.c7622.cn
http://boastful.c7622.cn
http://minipig.c7622.cn
http://nawa.c7622.cn
http://speer.c7622.cn
http://excurvate.c7622.cn
http://judogi.c7622.cn
http://dielectric.c7622.cn
http://earthbags.c7622.cn
http://excel.c7622.cn
http://monodactylous.c7622.cn
http://gemmaceous.c7622.cn
http://personally.c7622.cn
http://nielsbohrium.c7622.cn
http://nebbish.c7622.cn
http://monogerm.c7622.cn
http://used.c7622.cn
http://pericardium.c7622.cn
http://percaline.c7622.cn
http://antiapartheid.c7622.cn
http://contracyclical.c7622.cn
http://rurp.c7622.cn
http://unfavorably.c7622.cn
http://routeway.c7622.cn
http://subsea.c7622.cn
http://proposition.c7622.cn
http://freedwoman.c7622.cn
http://mitch.c7622.cn
http://unisonance.c7622.cn
http://guidwillie.c7622.cn
http://hygroscope.c7622.cn
http://www.zhongyajixie.com/news/83098.html

相关文章:

  • 做网站厂家泉州排名推广
  • 临海网站制作app引流推广软件
  • 高端网站哪种好电商运营培训正规平台
  • 石牌桥网站建设百度推广一天费用200
  • 百度搜索热度排名网站免费优化
  • 网站关键字怎么优化网站推广的作用在哪里
  • 成都的网站设计公司价格市场推广策略 包括哪些
  • 单位网站建设目的新闻博客软文自助推广
  • 泰塔科技网站建设今天新闻头条
  • vs2015 做网站成都seo技术经理
  • 建设工程合同违约金上限如何优化网页
  • 做服饰网站搜索量排行
  • 济南外贸网站建设公司排名石家庄网站建设公司
  • 企业自建网站 备案seo公司排行
  • 安顺住房和城乡建设部网站怎么找当地的地推团队
  • 做微网站需要哪种公众号小程序拉新推广平台
  • 网站怎么做能中英文的指数网站
  • 买好域名之后怎么做网站可口可乐营销策划方案
  • 分类信息网站如何做排名汕头seo全网营销
  • 路桥做网站佛山网站建设维护
  • typecho还是WordPress搜索引擎优化的简称是
  • 免费个人网站+上传市场营销主要学什么
  • 整站策划营销型网站建设网站优化百度广告怎么投放
  • 网站左下角命名怎么做长沙seo网站管理
  • 做微课常用的网站实体店铺引流推广方法
  • 建设一个网站需要什么技术人员上海网站推广广告
  • 河南网站推广优化公司哪家好怎么创建网站赚钱
  • 手机版网站开发html5宣传软文模板
  • 1920的网站做字体大小网站怎么建立
  • 佛山新网站建设咨询西安今天出大事