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

购物网站建设合同有哪些做文创产品的网站

购物网站建设合同,有哪些做文创产品的网站,厚街网站建设,网站根目录 本地共享环形队列DMA空闲中断接收串口数据 一.序言二.实验原理三.实战是检验真理的唯一标准3.1 usart1.c3.2 串口中断 三.队列代码4.1 fifo.c4.2 fifo.h 五.结语 一.序言 本次实验利用环形队列DMA空闲中断串口。。通过这个实验可以非常深入的理解队列#xff0c;DMA,串口的知识。如果… 环形队列DMA空闲中断接收串口数据 一.序言二.实验原理三.实战是检验真理的唯一标准3.1 usart1.c3.2 串口中断 三.队列代码4.1 fifo.c4.2 fifo.h 五.结语 一.序言 本次实验利用环形队列DMA空闲中断串口。。通过这个实验可以非常深入的理解队列DMA,串口的知识。如果你能自己实现掌握这个实验那么你应该基本掌握了队列DMA,串口的知识。 二.实验原理 本次使用的是用环形队列当缓冲器区接收串口数据。我们可以先区了解DMA的空闲中断。本次实验就是使用DMA空闲中断。这里就简单介绍一下当串口接收到一帧数据后就会产生中断那么如何判断数据是一帧呢这里的判断机制就是如果收到数据后大概接收一个字节的时间都没有接收到数据的话就判断已经接收的数据是一帧。接收一帧数据后串口就会产生空闲中断。同时DMA会把串口DR移位寄存器的值搬运到环形队列缓冲区。我们只需要在环形队列缓冲器拿数据即可。 三.实战是检验真理的唯一标准 仅仅通过理论只能说你知道有这个东西但是你可能并不会。下面我通过代码讲解也帮助深入理解理论。 3.1 usart1.c void Usart1_Init(void) {GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;DMA_InitTypeDef DMA_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //USART1_TX GPIOA.9GPIO_InitStructure.GPIO_Pin GPIO_Pin_9; //PA.9GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_PP; GPIO_Init(GPIOA, GPIO_InitStructure);//³õʼ»¯GPIOA.9//USART1_RX GPIOA.10³õʼ»¯GPIO_InitStructure.GPIO_Pin GPIO_Pin_10;//PA10GPIO_InitStructure.GPIO_Mode GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, GPIO_InitStructure);////Usart1 NVIC ÅäÖÃNVIC_InitStructure.NVIC_IRQChannel USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority5 ;NVIC_InitStructure.NVIC_IRQChannelSubPriority 0; NVIC_InitStructure.NVIC_IRQChannelCmd ENABLE; NVIC_Init(NVIC_InitStructure); //¸ù¾ÝÖ¸¶¨µÄ²ÎÊý³õʼ»¯VIC¼Ä´æÆ÷USART_InitStructure.USART_BaudRate 115200USART_InitStructure.USART_WordLength USART_WordLength_8bUSART_InitStructure.USART_StopBits USART_StopBits_1;USART_InitStructure.USART_Parity USART_Parity_No;USART_InitStructure.USART_HardwareFlowControl USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, USART_InitStructure); //使能空闲中断USART_ITConfig(USART1, USART_IT_IDLE , ENABLE);//使能发送完成中断--通过串口发送数据USART_ITConfig(USART1, USART_IT_TC , ENABLE);USART_DMACmd(USART1, USART_DMAReq_Tx|USART_DMAReq_Rx, ENABLE);USART_Cmd(USART1, ENABLE); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); DMA_DeInit(DMA1_Channel5);//外设地址--串口1 的DR寄存器DMA_InitStructure.DMA_PeripheralBaseAddr (uint32_t)(USART1-DR);DMA_InitStructure.DMA_MemoryBaseAddr (uint32_t)Uart1_Rx_Buffer; DMA_InitStructure.DMA_DIR DMA_DIR_PeripheralSRC; DMA_InitStructure.DMA_BufferSize BSP_UART1_RX_SIZE; DMA_InitStructure.DMA_PeripheralInc DMA_PeripheralInc_Disable;DMA_InitStructure.DMA_MemoryInc DMA_MemoryInc_Enable;DMA_InitStructure.DMA_PeripheralDataSize DMA_PeripheralDataSize_Byte;DMA_InitStructure.DMA_MemoryDataSize DMA_MemoryDataSize_Byte;DMA_InitStructure.DMA_Mode DMA_Mode_Circular; DMA_InitStructure.DMA_Priority DMA_Priority_Medium;DMA_InitStructure.DMA_M2M DMA_M2M_Disable;//串口1的接收引脚为DAM1的通道5DMA_Init(DMA1_Channel5, DMA_InitStructure)DMA_Cmd (DMA1_Channel5,ENABLE); //初始化环形队列Fifo_Init(Uart1_Rx_Fifo,Uart1_Rx_Buffer,BSP_UART1_RX_SIZE);3.2 串口中断 void USART1_IRQHandler(void) { //加上volatile 关键字只是为了防止警告volatile uint32_t temp 0;BaseType_t xHigherPriorityTaskWoken pdFALSE;if(USART_GetITStatus(USART1,USART_IT_IDLE)! RESET)//¿ÕÏÐÖжÏ{//根据数据量数据入队列//DMA_GetCurrDataCounter(DMA1_Channel5); 通道5还剩下多少个数据应该传输。//初始化的时候设置的通道5传输多少数据。Uart1_Rx_Fifo.in BSP_UART1_RX_SIZE - DMA_GetCurrDataCounter(DMA1_Channel5);//先读SR 再读DR 只是为了消除空闲中断标志位。手册上有说明temp USART1-SR; temp USART1-DR;USART_ClearITPendingBit(USART1,USART_IT_IDLE);}三.队列代码 代码可能看起来简单但是不是那么容易理解。得自己慢慢体会才能真正掌握 而不是一昧的copy,不然出了问题也解决不了自己代码水平也不能提高。 4.1 fifo.c #include sys.h #include app_fifo.h//初始化 void Fifo_Init(FIFO_Type* fifo, uint8_t* buffer, uint16_t size) {fifo-buffer buffer;fifo-in 0 ;fifo-out 0;fifo-size size; } //从队列中拿数据 uint16_t Fifo_Get(FIFO_Type* fifo, uint8_t* buffer, uint16_t len) {uint16_t lenght;uint16_t in fifo-in; uint16_t i;lenght (in fifo-size - fifo-out)%fifo-size;if(lenght len)lenght len;for(i 0; i lenght; i){buffer[i] fifo-buffer[(fifo-out i)%fifo-size];}fifo-out (fifo-out lenght)%fifo-size;return lenght; } 4.2 fifo.h #ifndef FIFO_H #define FIFO_H #include stm32f10x.h typedef struct {uint8_t* buffer; uint16_t in; uint16_t out; uint16_t size; }FIFO_Type;void Fifo_Init(FIFO_Type* fifo, uint8_t* buffer, uint16_t size);uint16_t Fifo_Get(FIFO_Type* fifo, uint8_t* buffer, uint16_t len);#endif 五.结语 代码放出来的就是以上这些都放上去也比较麻烦同时也没什么意义。写这篇博客是想让大家有大致的思路以及参考代码从而根据自己的项目或者需求区进行改动。最后如果真的需要全部代码的可以私信博主最好点点关注
http://wiki.neutronadmin.com/news/106198/

相关文章:

  • 山东富国建设投资有限公司网站电子商务网站建设行情
  • 腊肉网站的建设前景wordpress 蓝色主题
  • 怎么建立图片的网站个人建网站做站长
  • 企业类网站模版室内设计联盟下载
  • 江苏网站建设找拉米拉做历史课件用哪个网站比较好
  • 龙岗做网站公司dw做的网站怎么被别人打开
  • 祝桥建设网站做版权保护的网站
  • 东莞建设工程交易中心门户网站企业网站开发计划
  • 什么网站可以免费做找客户产品设计公司介绍
  • 装饰公司网站php源码兴业大街网站建设
  • 运城网站建设维护出版社类网站模板
  • 广州做网站找酷爱网络域名年费多少网站建设
  • 前端电商网站设计论文网站拖拽
  • 网站开发工程师面试问哪些问题市场营销策略分析案例
  • 做饲料机的川工网站个人社保缴费多少钱一个月
  • 音乐网站开发 群wordpress是英文版
  • 网站设计制作哪家服务好响应式网站无法做联盟广告
  • 湛江网站制作多少钱普通的旧房装修价格
  • 江西省城乡建设培训网 官方网站深圳企业网站建设开发费用
  • 查看一个网站的备案哪个网站是用php写的
  • 网站建设风格定位江苏网站建设要多少钱
  • 小学网站建设报告麻涌网站建设
  • 营销型网站建设营销型手机开发者选项怎么打开
  • 南山网站建设深圳信科怎么注册公司税最低
  • 东莞建站公司运转全网天下有 名wordpress 仿花瓣
  • 学校网站建设工作计划电子商务网站建设的核心多选
  • 营销型网站规划抖音宣传推广
  • 网站套餐到期什么意思海外网站cdn加速下载
  • 怎么做网站结构拓扑图wordpress 文章表
  • 惠州网站建设惠州建设劳务公司注册条件