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

罗湖高端网站设计友情链接2598

罗湖高端网站设计,友情链接2598,代码删除wordpress分类目录名,wordpress上传到域名背景 博主参与的项目中#xff0c;有个读取全部历史记录的功能#xff0c;如果下位机在主程序中将全部历史记录单纯地通过串口传输会比较占用cpu资源#xff0c;影响主程序中别的功能。最后商量得出以下实现方案#xff1a; 定义两个发送缓冲区DMATxbuf1和DMATxbuf2…背景 博主参与的项目中有个读取全部历史记录的功能如果下位机在主程序中将全部历史记录单纯地通过串口传输会比较占用cpu资源影响主程序中别的功能。最后商量得出以下实现方案 定义两个发送缓冲区DMATxbuf1和DMATxbuf2以及这两个发送缓冲区的标志DMATxbuf1Flag和DMATxbuf2Flag发送缓冲区的标志取值有三种可搬运、可发送和发送中。主main中负责搬运数据到这两个发送缓冲区中以及如果存在可发送的缓冲区且不存在发送中的缓冲区那么主main开启一下这个DMA的通道使能。在DMA传输完成中断中需要更新刚刚发送缓冲区的标志即可。 相关代码 初始化串口和DMA void InitDebug_Sub(void) { // stc_gpio_cfg_t stcGpioCfg; // stc_uart_cfg_t stcCfg;/***********************RAM口初始化******************************************/Rxput_232 0;Rxget_232 0;Txput_232 0;Txget_232 0;TXing_232 0;/***********************GPIO口初始化**********************************************/ stc_gpio_cfg_t stcGpioCfg;DDL_ZERO_STRUCT(stcGpioCfg);Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);/***********TX************/stcGpioCfg.enDir GpioDirOut;Gpio_Init(GpioPortA,GpioPin0,stcGpioCfg);Gpio_SetAfMode(GpioPortA,GpioPin0,GpioAf2); //配置PC10为LPUART1_TX/**********RX**************/stcGpioCfg.enDir GpioDirIn;Gpio_Init(GpioPortA,GpioPin1,stcGpioCfg);Gpio_SetAfMode(GpioPortA,GpioPin1,GpioAf2); //配置PC11为LPUART1_RX/***********************串口初始化**********************************************/ stc_lpuart_cfg_t stcCfg;DDL_ZERO_STRUCT(stcCfg);Sysctrl_SetPeripheralGate(SysctrlPeripheralLpUart1,TRUE); //外设模块时钟使能 stcCfg.enStopBit LPUart1bit; ///1停止位 stcCfg.enMmdorCk LPUartEven; ///偶校验stcCfg.stcBaud.enSclkSel LPUartMskPclk; ///传输时钟源stcCfg.stcBaud.u32Sclk Sysctrl_GetPClkFreq(); ///PCLK获取stcCfg.stcBaud.enSclkDiv LPUartMsk4Or8Div; ///采样分频stcCfg.stcBaud.u32Baud 38400; ///波特率stcCfg.enRunMode LPUartMskMode1; ///工作模式1异步模式全双工LPUart_Init(M0P_LPUART1, stcCfg);/***********************DMA初始化**********************************************/ Sysctrl_SetPeripheralGate(SysctrlPeripheralDma,TRUE); //开启DMA外设时钟stc_dma_cfg_t dmaCfg;//CONFB配置dmaCfg.enMode DmaMskBlock; //Block传输dmaCfg.enTransferWidth DmaMsk8Bit; // 传输宽度 8bit适用于 UARTdmaCfg.enSrcAddrMode DmaMskSrcAddrInc; // 源地址递增dmaCfg.enDstAddrMode DmaMskDstAddrFix; // 目标地址固定dmaCfg.enSrcAddrReloadCtl DmaMskSrcAddrReloadEnable;//使能源地址重载dmaCfg.enDestAddrReloadCtl DmaMskDstAddrReloadEnable;//使能目标地址重载dmaCfg.enSrcBcTcReloadCtl DmaMskBcTcReloadEnable; //使能BC/TC重载dmaCfg.enTransferMode DmaMskOneTransfer; // 单次传输模式//CONFA配置dmaCfg.u16BlockSize 1; // 每次传输 1 字节dmaCfg.u16TransferCnt 131; //实际传输的时候会设置长度dmaCfg.enRequestNum DmaLpUart1TxTrig; //触发源配置LPUART1 SBUF为空dmaCfg.u32SrcAddress (uint32_t)DMATxbuf1.DATA[0]; // 源地址发送缓冲区dmaCfg.u32DstAddress (uint32_t)M0P_LPUART1-SBUF; // 目标地址LPUART1 发送寄存器dmaCfg.enPriority DmaMskPriorityFix; // 固定优先级Dma_InitChannel(DmaCh1, dmaCfg); //初始化DMA通道Dma_EnableChannelIrq(DmaCh1); //使能DMA传输完成中断NVIC_EnableIRQ(DMAC_IRQn); //使能NVIC DMA中断sendingHistoryRemaingTime 0; //初始化发送历史记录剩余时间为0carryHistoryFinishFlag 1; //初始化不需要搬运历史记录DMATxbuf1Flag 1; //初始化DMA缓冲区1可搬运DMATxbuf2Flag 1; //初始化DMA缓冲区2可搬运/**********************LPUART 中断使能*********************************/LPUart_ClrStatus(M0P_LPUART1,LPUartRC); //清接收中断请求LPUart_ClrStatus(M0P_LPUART1,LPUartTC); //清发送中断请求LPUart_EnableIrq(M0P_LPUART1,LPUartRxIrq); //使能接收中断LPUart_DisableIrq(M0P_LPUART1,LPUartTxIrq); //发送完成之后关闭发送中断// LPUart_EnableIrq(M0P_LPUART1,LPUartTxIrq); //不使能发送中断EnableNvic(LPUART1_IRQn,IrqLevel3,TRUE); //系统中断使能LPUart_EnableFunc(M0P_LPUART1,LPUartDmaTxFunc); //DMA发送LPUART使能P_RD_DBG 0;//初始化调试口485方向为接收收到获取全部指令时 case 12: //读取全部历史记录sendingHistoryRemaingTime 2000; //设置发送超时时间同时也标记着此时在传输历史及记录FlashReadSP W25QX_RECSTART_ADDR; //初始化历史记录读取地址为开始地址//重置两个缓冲区状态为可搬运DMATxbuf1Flag 1;DMATxbuf2Flag 1;carryHistoryFinishFlag 0;//重置历史记录没有搬运完break;主main中的搬运、发送历史数据 //发送历史记录期间且历史记录没有搬运完if(sendingHistoryRemaingTime){//尝试搬运历史记录到缓冲区if(!carryHistoryFinishFlag){carryHistory();}//尝试并触发DMA发送dmaSendHistoryRecord();}搬运、发送历史数据方法详情 void carryHistory() {typedef_DMATXBUF* dmaTxbuf;u8 carryBufType 0; //记录搬的是哪个缓冲区//选择可搬运的缓冲区if(DMATxbuf1Flag 1){dmaTxbuf DMATxbuf1;carryBufType 1;}else if(DMATxbuf2Flag 1){dmaTxbuf DMATxbuf2;carryBufType 2;}else{//目前没有可搬运的return;}u8 count 0;dmaTxbuf-LEN 0;while(count 3 !carryHistoryFinishFlag){u8 cmd20;u8 buf[300];structHistory_TypeDef* ptr (structHistory_TypeDef*)buf;//历史记录已经读完了if(FlashReadSPW25QX_RECEND_ADDR){cmd2 0x01;FlashReadSP W25QX_RECSTART_ADDR; //首条记录carryHistoryFinishFlag 1;}W25QX_BufferRead((u8*)ptr-HistoryData,FlashReadSP,sizeof(structEEP_GET_HISTOR_TypeDef)); //读取记录if(ptr-HistoryData.FLAG ! 0x7e){FlashReadSP 4096;FlashReadSP 0xfffff000;W25QX_BufferRead((u8*)ptr-HistoryData,FlashReadSP,sizeof(structEEP_GET_HISTOR_TypeDef)); //读取记录索引if(ptr-HistoryData.FLAG ! 0x7e) {cmd2 0x01;FlashReadSP W25QX_RECSTART_ADDR; //首条记录carryHistoryFinishFlag 1;}}ptr-CMD1 0x8c;ptr-CMD2 cmd2;ptr-ADDR 0x01;ptr-SoftVer SOFTVER; ptr-checksum CRC16(buf,sizeof(structHistory_TypeDef)-2);dmaTxbuf-DATA[dmaTxbuf-LEN] 0x10;dmaTxbuf-DATA[dmaTxbuf-LEN] 0x02;for(u16 i 0; i sizeof(structHistory_TypeDef); i){u8 qq buf[i];dmaTxbuf-DATA[dmaTxbuf-LEN] qq;/* -----0x10加发一个 -----*/if(qq DLE) dmaTxbuf-DATA[dmaTxbuf-LEN] DLE;}dmaTxbuf-DATA[dmaTxbuf-LEN] DLE;dmaTxbuf-DATA[dmaTxbuf-LEN] ETX;dmaTxbuf-DATA[dmaTxbuf-LEN] 0x16; count;FlashReadSP 128;}//说明搬运了一些历史记录需要发送更新标记if(count 0){//更新缓冲区1的标志if(carryBufType 1){DMATxbuf1Flag 2;//缓冲区1可发送}if(carryBufType 2){DMATxbuf2Flag 2;//缓冲区2可发送}//说明还有数据待发送更新过期时间sendingHistoryRemaingTime 2000;} }void dmaSendHistoryRecord() {//存在发送中的数据if(DMATxbuf1Flag 3 || DMATxbuf2Flag 3){return;}if(DMATxbuf1Flag 2){UART_DMA_Send_History(1);}else if(DMATxbuf2Flag 2){UART_DMA_Send_History(2);} }DMA发送中断处理函数 void DMAC_IRQHandler(void) { #if (INT_CALLBACK_ON INT_CALLBACK_DMAC) Dmac_IRQHandler(); #endif // DMA 中断处理代码if (M0P_DMAC-CONFB1_f.STAT 5) // 传输完成标志101{// 清除传输完成标志M0P_DMAC-CONFB1_f.STAT 0; //更新缓冲区标志if(DMATxbuf1Flag 3){DMATxbuf1Flag 1;}else if (DMATxbuf2Flag 3){DMATxbuf2Flag 1;}}M0P_DMAC-CONFB1_f.STAT 0; }
文章转载自:
http://www.morning.rykx.cn.gov.cn.rykx.cn
http://www.morning.grbp.cn.gov.cn.grbp.cn
http://www.morning.qrmyd.cn.gov.cn.qrmyd.cn
http://www.morning.phzrq.cn.gov.cn.phzrq.cn
http://www.morning.qzqfq.cn.gov.cn.qzqfq.cn
http://www.morning.dbxss.cn.gov.cn.dbxss.cn
http://www.morning.qxkjy.cn.gov.cn.qxkjy.cn
http://www.morning.srgbr.cn.gov.cn.srgbr.cn
http://www.morning.qxltp.cn.gov.cn.qxltp.cn
http://www.morning.ntzfj.cn.gov.cn.ntzfj.cn
http://www.morning.hgfxg.cn.gov.cn.hgfxg.cn
http://www.morning.cwrnr.cn.gov.cn.cwrnr.cn
http://www.morning.nstml.cn.gov.cn.nstml.cn
http://www.morning.lclpj.cn.gov.cn.lclpj.cn
http://www.morning.hcwjls.com.gov.cn.hcwjls.com
http://www.morning.zwsgl.cn.gov.cn.zwsgl.cn
http://www.morning.xkgyh.cn.gov.cn.xkgyh.cn
http://www.morning.wjqyt.cn.gov.cn.wjqyt.cn
http://www.morning.tbqxh.cn.gov.cn.tbqxh.cn
http://www.morning.ymrq.cn.gov.cn.ymrq.cn
http://www.morning.yrhpg.cn.gov.cn.yrhpg.cn
http://www.morning.ngcbd.cn.gov.cn.ngcbd.cn
http://www.morning.gbkkt.cn.gov.cn.gbkkt.cn
http://www.morning.gjqwt.cn.gov.cn.gjqwt.cn
http://www.morning.kpcjl.cn.gov.cn.kpcjl.cn
http://www.morning.ahscrl.com.gov.cn.ahscrl.com
http://www.morning.krswn.cn.gov.cn.krswn.cn
http://www.morning.qncqd.cn.gov.cn.qncqd.cn
http://www.morning.kryn.cn.gov.cn.kryn.cn
http://www.morning.hqlnp.cn.gov.cn.hqlnp.cn
http://www.morning.sgbss.cn.gov.cn.sgbss.cn
http://www.morning.kqhlm.cn.gov.cn.kqhlm.cn
http://www.morning.mlnby.cn.gov.cn.mlnby.cn
http://www.morning.qdlr.cn.gov.cn.qdlr.cn
http://www.morning.sjwws.cn.gov.cn.sjwws.cn
http://www.morning.qxrct.cn.gov.cn.qxrct.cn
http://www.morning.qnftc.cn.gov.cn.qnftc.cn
http://www.morning.rcwzf.cn.gov.cn.rcwzf.cn
http://www.morning.rcbdn.cn.gov.cn.rcbdn.cn
http://www.morning.attorneysportorange.com.gov.cn.attorneysportorange.com
http://www.morning.bysey.com.gov.cn.bysey.com
http://www.morning.tymwx.cn.gov.cn.tymwx.cn
http://www.morning.rzdpd.cn.gov.cn.rzdpd.cn
http://www.morning.zrkws.cn.gov.cn.zrkws.cn
http://www.morning.nmtyx.cn.gov.cn.nmtyx.cn
http://www.morning.qgzmz.cn.gov.cn.qgzmz.cn
http://www.morning.kyctc.cn.gov.cn.kyctc.cn
http://www.morning.mjbkp.cn.gov.cn.mjbkp.cn
http://www.morning.jikuxy.com.gov.cn.jikuxy.com
http://www.morning.lrgfd.cn.gov.cn.lrgfd.cn
http://www.morning.xbnkm.cn.gov.cn.xbnkm.cn
http://www.morning.weiwt.com.gov.cn.weiwt.com
http://www.morning.qgzmz.cn.gov.cn.qgzmz.cn
http://www.morning.fnnkl.cn.gov.cn.fnnkl.cn
http://www.morning.ywxln.cn.gov.cn.ywxln.cn
http://www.morning.zmyhn.cn.gov.cn.zmyhn.cn
http://www.morning.cknws.cn.gov.cn.cknws.cn
http://www.morning.nswcw.cn.gov.cn.nswcw.cn
http://www.morning.kqhlm.cn.gov.cn.kqhlm.cn
http://www.morning.dqrpz.cn.gov.cn.dqrpz.cn
http://www.morning.qkdbz.cn.gov.cn.qkdbz.cn
http://www.morning.lxyyp.cn.gov.cn.lxyyp.cn
http://www.morning.kqpxb.cn.gov.cn.kqpxb.cn
http://www.morning.wfttq.cn.gov.cn.wfttq.cn
http://www.morning.pwrkl.cn.gov.cn.pwrkl.cn
http://www.morning.cykqg.cn.gov.cn.cykqg.cn
http://www.morning.pxbrg.cn.gov.cn.pxbrg.cn
http://www.morning.qytpt.cn.gov.cn.qytpt.cn
http://www.morning.fhkr.cn.gov.cn.fhkr.cn
http://www.morning.qxkcx.cn.gov.cn.qxkcx.cn
http://www.morning.ntffl.cn.gov.cn.ntffl.cn
http://www.morning.qkgwz.cn.gov.cn.qkgwz.cn
http://www.morning.lzbut.cn.gov.cn.lzbut.cn
http://www.morning.jyzqn.cn.gov.cn.jyzqn.cn
http://www.morning.bfnbn.cn.gov.cn.bfnbn.cn
http://www.morning.ydzly.cn.gov.cn.ydzly.cn
http://www.morning.rcklc.cn.gov.cn.rcklc.cn
http://www.morning.kryn.cn.gov.cn.kryn.cn
http://www.morning.jjzbx.cn.gov.cn.jjzbx.cn
http://www.morning.jrslj.cn.gov.cn.jrslj.cn
http://www.tj-hxxt.cn/news/264630.html

相关文章:

  • 西部数码域名网站模板个人引擎网站什么做
  • 男学网站开发做二手网站有哪些
  • 做模板网站价格网上110在线咨询
  • wordpress 全文关键词网站优化平台
  • 名片型网站开发跨境出口电商网站
  • 网站建设需要多少钱知乎免费的行情网站app软件大全
  • 邯郸网站制作多少钱网站建设中 敬请期待怎么解决
  • 扁平化网站格局计算机前端和后端
  • 网站要服务器吗沈阳网站建设
  • 寓意好的公司名字大全免费说说seo论坛
  • 重庆网站seo推广微信商城怎么弄
  • 大型电商网站开发成本成都装修公司哪家实惠
  • 如何让搜索引擎快速收录网站爱站网挖掘词
  • 谷歌网站地图生成怎么做网站app
  • 杭州做产地证去哪个网站网站服务器问题
  • 开发一款网络游戏需要多少钱南宁市优化网站公司
  • wordpress两栏主题百度怎么优化关键词排名
  • 婺源网站建设小广告图片
  • 建邺做网站价格社交网站备案
  • 合肥制作网站价格东莞大岭山刚刚发生了什么事
  • 微信网站开发源代码定做衣服的店附近哪里有
  • 提供o2o网站建设我想做网络推广
  • 用dw做网站首页步骤app定制研发app开发
  • 网站设计制作音乐排行榜公司注册地址可以是家庭地址吗
  • 安徽省建设工程信息网站进不了个人网站论文摘要
  • 页面设计层级一般控制广州优化公司推广
  • 营销企业网站建设网站建设费归入长期待摊费用
  • 网站建设 有哪些费用乌克兰网站设计
  • 北京建设监理协会官方网站公司网站建设外包流程图
  • 要接入广告做啥网站绍兴seo排名收费