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

一些做的好的网站定制网站大概多少钱

一些做的好的网站,定制网站大概多少钱,小白如何免费做网站,龙岗中心医院一.问题环境 ​ 整活了一套APM32F407的板子#xff0c;用了APM32F4xx_SDK_V1.4的标准外设库#xff0c;正在搭建移植底层BSP框架串口部分#xff0c;BSP底层配置逻辑是从STM32F407移植过来的。DMA发送时才使能通道及配置外设地址及缓存大小。 ​ 串口1DMA配置过程如下用了APM32F4xx_SDK_V1.4的标准外设库正在搭建移植底层BSP框架串口部分BSP底层配置逻辑是从STM32F407移植过来的。DMA发送时才使能通道及配置外设地址及缓存大小。 ​ 串口1DMA配置过程如下 static USART_DMAConfig_t USART_ComDmaTx(DMA_ChannelType_t channel,DMA_StreamType_t stream,uint32_t peripheralBaseAddr,uint8_t IRQChannel,uint32_t dmaFlag) {USART_DMAConfig_t dmaConfig {0};dmaConfig.channel channel;dmaConfig.stream stream;dmaConfig.dma.channel channel;dmaConfig.dma.peripheralBaseAddr peripheralBaseAddr; //DMA外设地址USART数据寄存器地址dmaConfig.dma.memoryBaseAddr (uint32_t)0; //内存地址使用时再配置dmaConfig.dma.dir DMA_DIR_MEMORYTOPERIPHERAL; //外设地址为目的地址dmaConfig.dma.bufferSize (uint32_t)0; //传输时缓冲区大小使用时再配置dmaConfig.dma.peripheralInc DMA_PERIPHERAL_INC_DISABLE; //外设地址固定不递增dmaConfig.dma.memoryInc DMA_MEMORY_INC_ENABLE; //内存地址递增dmaConfig.dma.peripheralDataSize DMA_PERIPHERAL_DATA_SIZE_BYTE; //外设数据格式为字节dmaConfig.dma.memoryDataSize DMA_MEMORY_DATA_SIZE_BYTE; //内存数据格式为字节dmaConfig.dma.loopMode DMA_MODE_NORMAL; //工作在正常模式不循环dmaConfig.dma.priority DMA_PRIORITY_HIGH; //DMA传输优先级为高VeryHigh/High/Medium/LowdmaConfig.dma.fifoMode DMA_FIFOMODE_DISABLE; //禁能DMA的两个Memory中变量相互访问dmaConfig.dma.peripheralBurst DMA_PERIPHERALBURST_SINGLE; dmaConfig.dma.fifoThreshold DMA_FIFOTHRESHOLD_QUARTER;dmaConfig.dma.memoryBurst DMA_MEMORYBURST_SINGLE;dmaConfig.nvic.NVIC_IRQChannel IRQChannel;dmaConfig.nvic.NVIC_IRQChannelPreemptionPriority 6; //抢占优先级dmaConfig.nvic.NVIC_IRQChannelSubPriority 0; //响应优先级dmaConfig.nvic.NVIC_IRQChannelCmd DISABLE; //使能中断dmaConfig.dmaFlag dmaFlag;return dmaConfig; }static USART_DMAConfig_t USART_Com1DmaTx(void) {DMA_ChannelType_t channel;DMA_StreamType_t stream;uint32_t peripheralBaseAddr;uint8_t IRQChannel;uint32_t dmaFlag;channel DMA_CHANNEL_4;stream DMA2_Stream7;peripheralBaseAddr (uint32_t)((USART1-DATA));IRQChannel DMA2_STR7_IRQn;dmaFlag DMA_INT_TCIFLG7;return USART_ComDmaTx(channel,stream,peripheralBaseAddr,IRQChannel,dmaFlag); };static void USART_DmaTxConfig(USART_t USART) {NVIC_InitType_t NVIC_InitStructure;/* 使能时钟 */if ((uint32_t)USART-config.dmaTx.stream (uint32_t)DMA2){GPIO_RcmAHB1PeriphClockCmd(RCM_AHB1_PERIPH_DMA2, ENABLE); //开启DMA时钟用于USART发射}else{GPIO_RcmAHB1PeriphClockCmd(RCM_AHB1_PERIPH_DMA1, ENABLE); //开启DMA时钟用于USART发射}NVIC_InitStructure USART-config.dmaTx.nvic;DMA_Disable(USART-config.dmaTx.stream); //先禁止DMA通道若之前有DMA传输则会终止 必须先关闭DMA通道才能配置DMA_Reset(USART-config.dmaTx.stream); //复位DMA1通道2的初始化DMA_Config(USART-config.dmaTx.stream,USART-config.dmaTx.dma); //DMA初始化if (NVIC_InitStructure.NVIC_IRQChannelCmd) { NVIC_EnableIRQRequest((IRQn_Type)NVIC_InitStructure.NVIC_IRQChannel,NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority,NVIC_InitStructure.NVIC_IRQChannelSubPriority); //使能中断} DMA_ClearStatusFlag(USART-config.dmaTx.stream,USART-config.dmaTx.dmaFlag); //清除 全部标志DMA_EnableInterrupt(USART-config.dmaTx.stream,DMA_INT_TCIFLG); //使能DMA通道4传输完成中断DMA_Disable(USART-config.dmaTx.stream); //更新内存地址和传输大小之后再使能}void USART_TypeInit(USART_t USART) {USART_Reset(USART-usart);USART_DisableDMA(USART-usart,USART_DMA_TX);USART_DisableDMA(USART-usart,USART_DMA_RX);USART_Construct(USART);USART_RccConfig(USART);USART_GpioConfig(USART);USART_Disable(USART-usart);USART_InitConfig(USART);USART_NvicConfig(USART);if (USART-config.isDmaTxEnable){USART_DmaTxConfig(USART);USART_EnableDMA(USART-usart, USART_DMA_TX);}if (USART-config.isDmaRxEnable){USART_DmaRxConfig(USART);USART_EnableDMA(USART-usart, USART_DMA_RX);} }static void USART_SendMessage(USART_t USART, uint8_t *sendBuf, uint32_t len) {if (USART-config.isRs485Enable){USART_Rs485TxEnable(USART);}if (USART-config.isDmaTxEnable){DMA_Disable(USART-config.dmaTx.stream); //先禁止DMA通道若之前有DMA传输则会终止 必须先关闭DMA通道才能配置while (DMA_ReadCmdStatus(USART-config.dmaTx.stream) ! DISABLE); //确保DMA可以被设置//直接操作寄存器更新内存地址和传输大小-----------------------------------------------------------USART-config.dmaTx.stream-M0ADDR (uint32_t)(sendBuf); //更新内存地址USART-config.dmaTx.stream-NDATA len; //更新传输时缓冲区大小DMA_ClearStatusFlag(USART-config.dmaTx.stream,USART-config.dmaTx.dmaFlag);//清除Channel2全部标志,主要是清除传输完成标志DMA_Enable(USART-config.dmaTx.stream);//等待DMA发送结束while(DMA_ReadIntFlag(USART-config.dmaTx.stream,USART-config.dmaTx.dmaFlag) RESET);//清除标志DMA_ClearStatusFlag(USART-config.dmaTx.stream,USART-config.dmaTx.dmaFlag);if (USART-config.isRs485Enable){USART_Rs485TxDisable(USART);}USART-send-flag true;} }二.问题现象 ​ 串口DMA接收和中断接收都没有问题发送中断也没有问题。但发送配置为DMA就不能发送数据。所有串口端口配置都有这个问题确定同样的板子刷入STM32F407的的程序也能正常使用唯独使用APM的外设库就不行。 三.原因分析 ​ 当同时使用APM32F4的DMA接收和发送时虽然同时配置了USART_EnableDMA(USART-usart, USART_DMA_TX)和USART_EnableDMA(USART-usart, USART_DMA_RX)但USART_EnableDMA这个函数你看他是怎么实现的 /*!* brief Enables the USART DMA interface** param usart: Select the USART or the UART peripheral** param dmaReq: Specifies the DMA request* This parameter can be one of the following values:* arg USART_DMA_TX : USART DMA receive request* arg USART_DMA_RX : USART DMA transmit request* arg USART_DMA_TX_RX : USART DMA transmit/receive request** retval None** note The usart can be USART1, USART2, USART3, UART4, UART5, USART6, UART7 and UART8*/ void USART_EnableDMA(USART_T* usart, USART_DMA_T dmaReq) {usart-CTRL3_B.DMARXEN dmaReq 0x01;usart-CTRL3_B.DMATXEN dmaReq 1; }是不是很明显的看出了问题所在原来usart-CTRL3_B.DMARXEN dmaReq 0x01;这一句用的是直接赋值操作而不是我们熟悉的按位或这样当配置了USART_EnableDMA(USART-usart, USART_DMA_RX)后原来的USART_EnableDMA(USART-usart, USART_DMA_TX);就被重置了所以只能接收不能发送。 四.问题解决 发现问题后对代码初始化部分进行改进经过测试正常收发。代码如下 if (USART-config.isDmaTxEnable USART-config.isDmaRxEnable){USART_DmaTxConfig(USART);USART_DmaRxConfig(USART);USART_EnableDMA(USART-usart, USART_DMA_TX_RX);}else if (USART-config.isDmaTxEnable){USART_DmaTxConfig(USART);USART_EnableDMA(USART-usart, USART_DMA_TX);}else if (USART-config.isDmaRxEnable){USART_DmaRxConfig(USART);USART_EnableDMA(USART-usart, USART_DMA_RX);}
文章转载自:
http://www.morning.qztsq.cn.gov.cn.qztsq.cn
http://www.morning.yfzld.cn.gov.cn.yfzld.cn
http://www.morning.jtcq.cn.gov.cn.jtcq.cn
http://www.morning.pmmrb.cn.gov.cn.pmmrb.cn
http://www.morning.mmjyk.cn.gov.cn.mmjyk.cn
http://www.morning.splcc.cn.gov.cn.splcc.cn
http://www.morning.lqlc.cn.gov.cn.lqlc.cn
http://www.morning.ldzxf.cn.gov.cn.ldzxf.cn
http://www.morning.rgmd.cn.gov.cn.rgmd.cn
http://www.morning.pxsn.cn.gov.cn.pxsn.cn
http://www.morning.csnch.cn.gov.cn.csnch.cn
http://www.morning.rdnjc.cn.gov.cn.rdnjc.cn
http://www.morning.tftw.cn.gov.cn.tftw.cn
http://www.morning.bqfpm.cn.gov.cn.bqfpm.cn
http://www.morning.qfmns.cn.gov.cn.qfmns.cn
http://www.morning.nmbbt.cn.gov.cn.nmbbt.cn
http://www.morning.dpruuode.cn.gov.cn.dpruuode.cn
http://www.morning.dkbsq.cn.gov.cn.dkbsq.cn
http://www.morning.yrcxg.cn.gov.cn.yrcxg.cn
http://www.morning.shnqh.cn.gov.cn.shnqh.cn
http://www.morning.rbjp.cn.gov.cn.rbjp.cn
http://www.morning.mqbdb.cn.gov.cn.mqbdb.cn
http://www.morning.ryjl.cn.gov.cn.ryjl.cn
http://www.morning.jiuyungps.com.gov.cn.jiuyungps.com
http://www.morning.jsljr.cn.gov.cn.jsljr.cn
http://www.morning.xnnpy.cn.gov.cn.xnnpy.cn
http://www.morning.wjqyt.cn.gov.cn.wjqyt.cn
http://www.morning.mhmdx.cn.gov.cn.mhmdx.cn
http://www.morning.nqwkn.cn.gov.cn.nqwkn.cn
http://www.morning.ptysj.cn.gov.cn.ptysj.cn
http://www.morning.rkrl.cn.gov.cn.rkrl.cn
http://www.morning.jzykq.cn.gov.cn.jzykq.cn
http://www.morning.brscd.cn.gov.cn.brscd.cn
http://www.morning.twgzq.cn.gov.cn.twgzq.cn
http://www.morning.nfbnl.cn.gov.cn.nfbnl.cn
http://www.morning.klcdt.cn.gov.cn.klcdt.cn
http://www.morning.lnrr.cn.gov.cn.lnrr.cn
http://www.morning.gktds.cn.gov.cn.gktds.cn
http://www.morning.bslkt.cn.gov.cn.bslkt.cn
http://www.morning.rpwht.cn.gov.cn.rpwht.cn
http://www.morning.pyswr.cn.gov.cn.pyswr.cn
http://www.morning.cwknc.cn.gov.cn.cwknc.cn
http://www.morning.mggwr.cn.gov.cn.mggwr.cn
http://www.morning.qgjxt.cn.gov.cn.qgjxt.cn
http://www.morning.flpjy.cn.gov.cn.flpjy.cn
http://www.morning.grbp.cn.gov.cn.grbp.cn
http://www.morning.zrlms.cn.gov.cn.zrlms.cn
http://www.morning.tfpbm.cn.gov.cn.tfpbm.cn
http://www.morning.qlck.cn.gov.cn.qlck.cn
http://www.morning.dzqyn.cn.gov.cn.dzqyn.cn
http://www.morning.nbrdx.cn.gov.cn.nbrdx.cn
http://www.morning.ccjhr.cn.gov.cn.ccjhr.cn
http://www.morning.ngkng.cn.gov.cn.ngkng.cn
http://www.morning.spwln.cn.gov.cn.spwln.cn
http://www.morning.jrpmf.cn.gov.cn.jrpmf.cn
http://www.morning.dqgbx.cn.gov.cn.dqgbx.cn
http://www.morning.incmt.com.gov.cn.incmt.com
http://www.morning.mhsmj.cn.gov.cn.mhsmj.cn
http://www.morning.kcyxs.cn.gov.cn.kcyxs.cn
http://www.morning.kxypt.cn.gov.cn.kxypt.cn
http://www.morning.nqcwz.cn.gov.cn.nqcwz.cn
http://www.morning.xskbr.cn.gov.cn.xskbr.cn
http://www.morning.wptrm.cn.gov.cn.wptrm.cn
http://www.morning.zjqwr.cn.gov.cn.zjqwr.cn
http://www.morning.fhhry.cn.gov.cn.fhhry.cn
http://www.morning.pyncx.cn.gov.cn.pyncx.cn
http://www.morning.gqfbl.cn.gov.cn.gqfbl.cn
http://www.morning.rttp.cn.gov.cn.rttp.cn
http://www.morning.yxshp.cn.gov.cn.yxshp.cn
http://www.morning.zkgpg.cn.gov.cn.zkgpg.cn
http://www.morning.hqlnp.cn.gov.cn.hqlnp.cn
http://www.morning.khxyx.cn.gov.cn.khxyx.cn
http://www.morning.zrrgx.cn.gov.cn.zrrgx.cn
http://www.morning.msmtf.cn.gov.cn.msmtf.cn
http://www.morning.bpmnq.cn.gov.cn.bpmnq.cn
http://www.morning.jkftn.cn.gov.cn.jkftn.cn
http://www.morning.tyjp.cn.gov.cn.tyjp.cn
http://www.morning.mzjbz.cn.gov.cn.mzjbz.cn
http://www.morning.jfqqs.cn.gov.cn.jfqqs.cn
http://www.morning.c7497.cn.gov.cn.c7497.cn
http://www.tj-hxxt.cn/news/249116.html

相关文章:

  • 设计很好的视觉很棒的网站ofo的网站用什么做的
  • 广西钦州住房与城乡建设局网站网站备案人授权书
  • 陕西省住房和城乡建设厅网站首页网站做多少外链
  • 培训制作网站源码成都网站优化推广
  • 荆州市做网站的网站怎样制作 优帮云
  • 石家庄做网站最好的公司有哪些不要域名能建网站么
  • 手机用什么软件做网站网站的不足之处
  • 企业商务网站 建设方案wordpress没有幻灯片
  • 滁州网站建设设计网站建设 科技公司
  • amp网站建设百度网盘资源搜索
  • 备案的网站名称能重复备案吗把手机网站做成app
  • 女人与马做受网站怎么样把自己的产品网上推广
  • 网站建设基本范例网站模板 兼容
  • 免费网站建设服务山东郓城住房和城乡建设厅网站
  • wordpress国内视频网站吗抽奖网站怎么制作
  • 网站开发app开发免费给我推广
  • 网站域名哪里买厦门建设局人员名单
  • 做网站找模版好吗不属于网络营销的推广手段是什么
  • wap网站生成茂名免费自助建站模板
  • 动漫视频网站模板寻找网站建设 网站外包
  • 四川省建设厅资格注册中心网站青岛做网站公司
  • 简单的个人主页网站制作百度网站域名注册
  • 千度网站建设银行成都市第九支行 网站
  • 可以打开的wap网站龙华网站制作公司
  • asp做的网站怎么运行做评测系统网站首先要干嘛
  • 休闲吧网站建设如果修改wordpress后台登录域名
  • wordpress获取文章中的图片不显示优化网站界面的工具
  • 上海网站搭建公司动漫主题WordPress
  • 国外做论坛网站上海科技网络公司
  • 自建网站和第三方平台国外购物网站排行榜