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

做外贸个人网站好吗聊石家庄seo

做外贸个人网站好吗,聊石家庄seo,建筑工程网是什么网站,内容营销的定义一、串口接受到换行符停止 #include usart.hUCHAR arr_rxData[1024]{0};//存储串口接收的数据 UINT arr_len0;//串口已经接收数据的字节数个数 USART_RX_FLAG rxFlgFLASE;//默认串口未接收到数据void USART2_Init(void) {rcu_periph_clock_enable(RCU_GPIOB); //e…一、串口接受到换行符停止 #include usart.hUCHAR arr_rxData[1024]{0};//存储串口接收的数据 UINT arr_len0;//串口已经接收数据的字节数个数 USART_RX_FLAG rxFlgFLASE;//默认串口未接收到数据void USART2_Init(void) {rcu_periph_clock_enable(RCU_GPIOB); //enable GPIO clock rcu_periph_clock_enable(RCU_USART2);// enable USART clockgpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10); // USARTx_Tx gpio_init(GPIOB, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_11);//USARTx_Rxusart_deinit(USART2); //USART configure usart_baudrate_set(USART2, 115200); //设置波特率usart_word_length_set(USART2, USART_WL_8BIT); //设置数据位usart_parity_config(Uusart_hardware_flow_rts_config(USART2, USART_RTS_DISABLE); usart_hardware_flow_cts_config(USART2, USART_CTS_DISABLE); //无硬件数据流控制usart_receive_config(USART2, USART_RECEIVE_ENABLE); //使能接收器usart_transmit_config(USART2, USART_TRANSMIT_ENABLE); //使能发送器nvic_irq_enable(USART2_IRQn, 1, 0);//配置NVIC分组初始化NVIC分组4usart_interrupt_enable(USART2, USART_INT_RBNE);//使能接收中断usart_enable(USART2);//使能串口 }int fputc(int ch, FILE *f) {while(RESET usart_flag_get(USART2, USART_FLAG_TBE));usart_data_transmit(USART2, (uint8_t)ch);return ch; }/**************************************************************************** 1、如果使能接收中断但是还是没有进入中断处理函数可能是硬件接线比较松导致出现问题 2、接收数据代码书写if(rxFlgTRUE)//表示接受一次数据完成{printf(receive data:%s\r\n,arr_rxData);//将接收数据的标志位数据长度存储数据数组都清0rxFlgFLASE;arr_len0;memset(arr_rxData,0,sizeof(arr_rxData));} ******************************************************************************/ void USART2_IRQHandler(void) {if(RESET ! usart_interrupt_flag_get(USART2, USART_INT_FLAG_RBNE)){arr_rxData[arr_len]usart_data_receive(USART2);if(arr_rxData[arr_len-1]0x0a){rxFlgTRUE;arr_len--;arr_rxData[arr_len]\0;}}//usart_interrupt_flag_clear(USART2, USART_INT_FLAG_RBNE);/*清除中断标志位不用手动清除中断标志位因为不管是直接读寄存器还是通过DMA只要是对USART_DATA寄存器的一个读操作都可以硬件自动清除RBNE位*/ } 二、使用空闲中断实现串口接收  对于串口接收到的数据还有很重要的一点就是不确定长度这样就不知道何时该停止接收这个时候串口的空闲中断就体现出他的重要性了那么什么是空闲中断呢 空闲中断是在检测到有数据接收后总线上在一个字节的时间内没有再接收到数据时从而产生中断。即串口的RXNE位被置位之后才开始检测检测到空闲之后串口的CR1寄存器的IDLE位被硬件置1。 #include usart.hUCHAR arr_rxData[1024]{0};//存储串口接收的数据 UINT arr_len0;//串口已经接收数据的字节数个数 USART_RX_FLAG rxFlgFLASE;//默认串口未接收到数据void USART2_Init(void) {rcu_periph_clock_enable(RCU_GPIOB); //enable GPIO clock rcu_periph_clock_enable(RCU_USART2);// enable USART clockgpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10); // USARTx_Tx gpio_init(GPIOB, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_11);//USARTx_Rxusart_deinit(USART2); //USART configure usart_baudrate_set(USART2, 115200); //设置波特率usart_word_length_set(USART2, USART_WL_8BIT); //设置数据位usart_parity_config(Uusart_hardware_flow_rts_config(USART2, USART_RTS_DISABLE); usart_hardware_flow_cts_config(USART2, USART_CTS_DISABLE); //无硬件数据流控制usart_receive_config(USART2, USART_RECEIVE_ENABLE); //使能接收器usart_transmit_config(USART2, USART_TRANSMIT_ENABLE); //使能发送器nvic_irq_enable(USART2_IRQn, 1, 0);//配置NVIC分组初始化NVIC分组4usart_interrupt_enable(USART2, USART_INT_RBNE);//使能接收中断usart_enable(USART2);//使能串口 }int fputc(int ch, FILE *f) {while(RESET usart_flag_get(USART2, USART_FLAG_TBE));usart_data_transmit(USART2, (uint8_t)ch);return ch; }void USART2_IRQHandler(void) {if(RESET ! usart_interrupt_flag_get(USART2, USART_INT_FLAG_RBNE)){arr_rxData[arr_len]usart_data_receive(USART2);}if(RESET ! usart_interrupt_flag_get(USART2, USART_INT_FLAG_IDLE)){usart_interrupt_flag_clear(USART2,USART_INT_FLAG_IDLE); /* 清除空闲中断标志位 */usart_data_receive(USART2); rxFlgTRUE;arr_len--;arr_rxData[arr_len]\0;} } 三、使用DMA转运数据实现串口接收  对于串口的数据接收来说和发送一样如果采用传统的接收中断模式接收数据同样的会因为频繁中断而导致消耗大量CPU资源所以也使用DMA进行串口数据的接收。 #define USART2_ADDR (uint32_t)USART_DATA(USART2) UCHAR UART2_RX_BUF[UART2_RX_LEN*2]; /* 双接收缓冲区 */ USART_RX_FLAG UART2_RX_STAT FLASE; UINT UART2_RX_NUM 0; /* 接收到的数据个数 */void USART2_DMA_Init(void) {dma_parameter_struct dma_init_struct; /* DMA配置参数结构体 */rcu_periph_clock_enable(RCU_GPIOB); //enable GPIO clock rcu_periph_clock_enable(RCU_USART2);// enable USART clockrcu_periph_clock_enable(RCU_DMA0); /* 使能 DMA0 时钟 */gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10); gpio_init(GPIOB, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_11);usart_deinit(USART2); //USART configure usart_baudrate_set(USART2, 115200); //设置波特率usart_word_length_set(USART2, USART_WL_8BIT); //设置数据位usart_parity_config(USART2, USART_PM_NONE); //设置奇偶校验位usart_stop_bit_set(USART2, USART_STB_1BIT); //设置停止位usart_hardware_flow_rts_config(USART2, USART_RTS_DISABLE); //禁用rtsusart_hardware_flow_cts_config(USART2, USART_CTS_DISABLE); //无硬件数据流控制usart_receive_config(USART2, USART_RECEIVE_ENABLE); //使能接收器usart_transmit_config(USART2, USART_TRANSMIT_ENABLE); //使能发送器/* USART0 DMA 接收配置*/dma_deinit(DMA0, DMA_CH2);/*USART2_RX:CH2 USART0_RX:CH4*/dma_struct_para_init(dma_init_struct);dma_init_struct.direction DMA_PERIPHERAL_TO_MEMORY; /* 外设到存储器方向 */dma_init_struct.memory_addr (uint32_t)UART2_RX_BUF; /* 存储器基地址 */dma_init_struct.memory_inc DMA_MEMORY_INCREASE_ENABLE; /* 存储器地址自增 */dma_init_struct.memory_width DMA_MEMORY_WIDTH_8BIT; /* 存储器位宽为8位 */dma_init_struct.priority DMA_PRIORITY_ULTRA_HIGH; /* 软件优先级为极高*/dma_init(DMA0, DMA_CH2, dma_init_struct);dma_circulation_disable(DMA0, DMA_CH2);/* DMA循环模式配置不使用循环模式 */usart_dma_transmit_config(USART2, USART_DENT_ENABLE);usart_dma_receive_config(USART2, USART_DENR_ENABLE);nvic_irq_enable(DMA0_Channel2_IRQn, 0, 0);/* DMA0 通道2 中断优先级设置并使能 */dma_channel_enable(DMA0, DMA_CH2);/* 使能 DMA0 通道2 */nvic_irq_enable(USART2_IRQn, 1, 0);//配置NVIC分组初始化NVIC分组4usart_interrupt_enable(USART2, USART_INT_IDLE);/* 使能USART0空闲中断 */usart_enable(USART2);//使能串口 }/* 如果接收完毕那么将数据打印出来 if(UART2_RX_STAT TRUE) {UART2_RX_STAT FLASE;printf(RECEIVE %d data:%s \r\n, UART2_RX_NUM, UART2_RX_BUF); } */ void USART2_IRQHandler(void) {if(RESET ! usart_interrupt_flag_get(USART2, USART_INT_FLAG_IDLE)) //空闲中断{usart_interrupt_flag_clear(USART2,USART_INT_FLAG_IDLE); /* 清除空闲中断标志位 */usart_data_receive(USART2); /* 清除接收完成标志位 */dma_channel_disable(DMA0, DMA_CH2); /* 关闭DMA传输 */UART2_RX_NUM sizeof(UART2_RX_BUF) - dma_transfer_number_get(DMA0,DMA_CH2);UART2_RX_BUF[UART2_RX_NUM] \0; /* 添加字符串结束符 */UART2_RX_STAT TRUE;/* 接收完成 */ /* 重新设置DMA传输 */dma_memory_address_config(DMA0,DMA_CH2,(uint32_t)UART2_RX_BUF);dma_transfer_number_config(DMA0,DMA_CH2,sizeof(UART2_RX_BUF));dma_channel_enable(DMA0, DMA_CH2); /* 开启DMA传输 */} }
http://www.zqtcl.cn/news/928847/

相关文章:

  • 做淘宝网站多少钱江苏省建设厅网站建筑电工证
  • 深圳网站建设 贴吧广州档案馆建设网站
  • 专注网站建设电商商城网站建设
  • 黄石专业网站建设推广一起做网店 网站打不开
  • 网站session 验证江西星子网
  • 成都高校网站建设服务公司小树建站平台
  • 宁波网站建设 慕枫科技顺德网站设计制作
  • 企业网站如何宣传wordpress 链接修改插件
  • 站长工具官网查询视频网站建设工具
  • 建设彩票网站制作网站服务器
  • 购物网站建设网站怎么购买国外的域名
  • 在线网站排名工具跨境电商卖什么产品最赚钱
  • 电商网页设计网站什么是网络营销产生的现实基础
  • 网站开发需要注意的阿里云做网站可以免备案吗
  • 网站开发后端菜鸟教程本地安装wordpress nginx
  • 网站做端口映射域名怎么做网站
  • 港口建设征收 申报网站网站内容建设与管理
  • 长沙企业网站建设较好的公司个人社保缴费比例
  • 网站备案信息页面惠安网站建设报价
  • 东莞做微网站建设十大免费软件下载
  • 做的很好的黑白网站成都小程序开发
  • 发布做任务网站wordpress新建用户
  • 郑州市东区建设环保局官方网站工作简历模板免费下载
  • 虾皮跨境电商网站公司网站建设费计入什么费用
  • 东光有做网站的吗公司装修图片大全
  • 一个域名下多个网站项目网手游
  • 网站建设竞价托管服务wordpress搬站流程
  • 做视频网站视频文件都存放在哪室内设计网站平台
  • 外贸网站建设网合肥网站设计公
  • 网站建设设计制作 熊掌号一键生成小程序商城