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

网站建站分辨率wordpress 登录流程

网站建站分辨率,wordpress 登录流程,平台建站建设,成都十大猎头公司使用场景 在需要多次采样结果的情况下,比如1s需要10w次的采样结果,可以考虑使用定时器触发采样,定时器设置多少的时间就会多久采样转换一次。 再加上使用dma,采样的结果直接放在dma的数组里面。 实现了自动采样,自动…

使用场景

在需要多次采样结果的情况下,比如1s需要10w次的采样结果,可以考虑使用定时器触发采样,定时器设置多少的时间就会多久采样转换一次。

再加上使用dma,采样的结果直接放在dma的数组里面。

实现了自动采样,自动保存,使用非常方便。

需要用到CTU模块

代码如下

代码不是很完整  可以参考sample里面adc的定时器触发代码

/*********<Variable>********/
uint8_t g_dmaFinish = 0;//DMA传输完成
uint8_t g_halfDmaFinish = 0; //DMA传输半完成
uint8_t g_dmaTransError = 0; //DMA传输错误
uint32_t g_ADCValueBuffer[DMA_TRANSFER_NUM + 1] = {0};
uint32_t g_timerCnt = 0;
uint32_t g_averageSampleValue = 0;#define Delay50us                      (APB_BUS_FREQ/2000-1)
#define Delay5ms                      (APB_BUS_FREQ/200-1)
#define Delay1s                       (APB_BUS_FREQ-1)
#define DMA_TRANSFER_NUM               100void ADC_DMACallback(void *device, uint32_t wpara, uint32_t lpara)
{/*wparam为DMA通道状态,状态含义可参考CHANNELx_STATUS寄存器,CHANNELx_STATUS[2] 传输错误CHANNELx_STATUS[1] 半传输完成(相对设置的transferNum,如果半传输中断有使能,transferNum设为6,则DATA_TRANS_NUM为3时产生中断,进入回调)CHANNELx_STATUS[0] 传输完成*/if ((wpara & 0x01) == 0x1){g_dmaFinish = 1;}if ((wpara & 0x02) == 0x2){g_halfDmaFinish = 1;}if ((wpara & 0x04) == 0x4){g_dmaTransError = 1;}
}void ADC_DMAInit(void)
{uint32_t tmpMemStartAddr = (uint32_t)&g_ADCValueBuffer[0];uint32_t tmpMemEndAddr = (uint32_t)&g_ADCValueBuffer[DMA_TRANSFER_NUM + 1]; ///<Setting memory DMA addressDMA_ConfigType tmpDMAConfig;memset(&tmpDMAConfig, 0x00, sizeof(DMA_ConfigType));tmpDMAConfig.memStartAddr = tmpMemStartAddr; //设置DMA开始地址tmpDMAConfig.memEndAddr = tmpMemEndAddr;//设置DMA结束地址tmpDMAConfig.periphStartAddr = (uint32_t)(&(ADC0->RDR)); ///<Move ADC DR to memorytmpDMAConfig.channelEn = ENABLE;                     ///<使能DMAx通道tmpDMAConfig.finishInterruptEn = ENABLE;                   ///<使能DMA传输完成中断tmpDMAConfig.halfFinishInterruptEn = DISABLE;               ///<去能DMA半传输完成中断tmpDMAConfig.errorInterruptEn = ENABLE;                    ///<使能DMA传输错误中断tmpDMAConfig.channelPriority = DMA_PRIORITY_VERY_HIGH;///<设置DMA通道优先级,0~3 :优先级由低到高tmpDMAConfig.circular = ENABLE;                      ///<使能循环模式,如果只想工作一次,设为0即可。tmpDMAConfig.direction = DMA_READ_FROM_PERIPH;          ///<0: 从外设读取,1:从存储器读取tmpDMAConfig.MEM2MEM = DISABLE;                     ///<0:在非存储器与存储器之间传输,1:在存储器与存储器之间传输tmpDMAConfig.memByteMode = DMA_MEM_BYTE_MODE_1TIME;  ///<MEM字分割传输数,0:32-bit,1:16-bit[15:0]; 2:16-bit[23:16][7:0];3:8-bit。详情可参考AC781X芯片手册  表20-2 可编程数据宽度&数据对齐 tmpDMAConfig.memIncrement = ENABLE;                  ///<1:MEM地址增加tmpDMAConfig.periphIncrement = DISABLE;               ///<0:外设地址固定tmpDMAConfig.memSize = DMA_MEM_SIZE_32BIT;           ///<0:8-bit,1:16-bit,2:32-bittmpDMAConfig.periphSize = DMA_PERIPH_SIZE_16BIT;     ///<0:8-bit,1:16-bit,2:32-bittmpDMAConfig.transferNum = DMA_TRANSFER_NUM;         ///<DMA通道传输长度tmpDMAConfig.periphSelect = DMA_PEPIRH_ADC0;  //外设选择tmpDMAConfig.callBack = ADC_DMACallback; ///<设置DMA中断回调DMA_Init(DMA0_CHANNEL0, &tmpDMAConfig);                     ///<ADC 使用DMA1通道,每个模块对应的DMA通道,可参考 AC781X芯片手册 表20-1 DMA请求列表NVIC_EnableIRQ(DMA0_CHANNEL0_IRQn);                              ///<使能DMA1中断请求
}
/*** CTU_Config** @param[in] void* @return void** @brief 配置CTU模块,Timer0触发ADC规则组采样。*/
void CTU_Config(void)
{CTU_ConfigType ctuConfig;memset(&ctuConfig, 0x00, sizeof(ctuConfig));ctuConfig.uart0RxFilterEn = DISABLE;  //去能UART0_RX滤波ctuConfig.rtcCaptureEn = DISABLE;  //去能RTC捕获ctuConfig.acmpCaptureEn = DISABLE;  //去能ACMP捕获ctuConfig.uart0RxCaptureEn = DISABLE;  //去能UART0_RX捕获ctuConfig.uartTxModulateEn = DISABLE;  //去能UART0_TX调制ctuConfig.clkPsc = CTU_CLK_PRESCALER_1;  //分频ctuConfig.adcRegularTriggerSource = CTU_TRIGGER_ADC_TIMER_CH0_OVERFLOW; //Timer0触发ADC规则组采样。ctuConfig.delay0Time = 0;  //触发延迟CTU_Init(&ctuConfig);
}void TIMER_Callback(void *device, uint32_t wpara, uint32_t lpara)
{if (TIMER_CHANNEL0 == device){g_timerCnt++;}
}void TIMER0_Init(void)
{TIMER_ConfigType timerConfig = {0};timerConfig.periodValue = Delay50us;//5ms定时timerConfig.interruptEn = ENABLE;//使能中断timerConfig.linkModeEn = DISABLE;//级联模式去能timerConfig.callBack = TIMER_Callback;//设置中断回调函数timerConfig.timerEn = ENABLE;//使能定时器TIMER_Init(TIMER_CHANNEL0, &timerConfig);
}void ADC_init()
{ADC_ConfigType tempAdcConfig;ADC_ConfigType* adcConfig;adcConfig = &tempAdcConfig;//配置PINMUXGPIO_SetFunc(GPIOA, GPIO_PIN2, GPIO_FUN2);///<ADC_IN8 Analog function enableGPIO_SetFunc(GPIOA, GPIO_PIN8, GPIO_FUN2);///<ADC_IN8 Analog function enableadcConfig->clkPsc = ADC_CLK_PRESCALER_1; ///<Set ADC Clk = 24M/2/(0+1)adcConfig->scanModeEn = ENABLE;                   //扫描模式adcConfig->continousModeEn = DISABLE;             //连续模式adcConfig->regularDiscontinousModeEn = DISABLE;   //1:打开规则组间断转换模式adcConfig->injectDiscontinousModeEn = DISABLE;    //1:打开注入组间断转换模式adcConfig->injectAutoModeEn = DISABLE;            //1:自动注入模式adcConfig->intervalModeEn = DISABLE;              //1:注入组为间隔转换模式adcConfig->regularDiscontinousNum = 0;            //adcConfig->EOCInterruptEn = DISABLE;              //EOC中断去能adcConfig->IEOCInterruptEn = DISABLE;             //IEOC中断去能adcConfig->interruptEn = DISABLE;                 //去能中断adcConfig->regularDMAEn = ENABLE;                 //使能ADC DMAadcConfig->regularTriggerMode = ADC_TRIGGER_EXTERNAL;//ADC触发源,外部触发adcConfig->injectTriggerMode = ADC_TRIGGER_INTERNAL; //ADC触发源,内部触发adcConfig->regularSequenceLength = 2;               //规则组长度设为1adcConfig->injectSequenceLength = 0;               //注入组长度设为0adcConfig->dataAlign = ADC_DATA_ALIGN_RIGHT;       //右对齐adcConfig->powerMode = ADC_POWER_ON;               //上电ADC_Init(ADC0, adcConfig);                      ///<ADC works Mode Config/*ADC转换率计算公式:转换时间= 采样时间+转换时间+同步时间转换时间= (SPT+12)/ADC模块时钟频率+5/APB时钟频率备注:1.同步时间为5个APB CLK。2.ADC时钟频率 = APB时钟频率 /(分频系数+1)*///ADC_SetRegularGroupChannel(ADC0, ADC_CH_8, ADC_SPT_CLK_7, 0);  //采样&转换时间= (7+12)/24000000 + 5/24000000 = 1usADC_SetRegularGroupChannel(ADC0, ADC_CH_8, ADC_SPT_CLK_64, 0);  //采样&转换时间= (7+12)/24000000 + 5/24000000 = 1usADC_SetRegularGroupChannel(ADC0, ADC_CH_3, ADC_SPT_CLK_64, 1);  //采样&转换时间= (7+12)/24000000 + 5/24000000 = 1usADC_DMAInit();   //ADC DMA初始化
}void sampleValueDeal(void)
{int i;uint32_t sumValue = 0;for (i = 0; i < DMA_TRANSFER_NUM; i++){sumValue += g_ADCValueBuffer[i];}g_averageSampleValue = sumValue / DMA_TRANSFER_NUM;}void ADC_SampleTimerTrigerRegular(void)
{CTU_Config();ADC_init();TIMER0_Init();///<开始ADC规则组转换,转换值根据规则组通道顺序存储在g_ADCValueBuffer数组中。while(1){//nothing todo mdelay(500);sampleValueDeal();printf("Timer Triger ADC Regular Sample value: %d\r\n", g_averageSampleValue);}
}/**********<End>*********/

采样频率用这个时间来控制

需要用到CTU模块来连接定时器和ADC'

需要多个ADC通道在这里添加,注意修改规则组长度

DMA的配置用示例的就行

配置了2个通道的时候,采样的结果会按照顺序存储在DMA数组里面

http://www.yayakq.cn/news/250055/

相关文章:

  • 织梦做英文网站辽宁建设工程信息网登录入口
  • 三网合一网站源码下载哈尔滨创寻网站建设
  • 做斗图的网站广告设计制作安装合同
  • 北仑网站制作沈阳网站制作优化推广
  • 网站做导航的地图开发一个app价目表
  • 石家庄服务大型建站项目管理软件app
  • 深圳有做网站的公司660元我的网站百度搜不到
  • 怎么做加盟网站wordpress防止采集
  • 轻云服务器菁英版 多个网站西部数据网站助手
  • 网站建设合同应注意服务网站排名咨询
  • 公司网站建设的目的和意义网站建设数据安全的意义
  • 长沙网站推广排名做竞价网站访问突然变少
  • 上海网站建设开发哪asp.net 网站管理系统
  • 网站访问对应二级域名公式wordpress
  • 做自媒体可以搬运国外网站新闻吗2022年网页游戏排行榜
  • 制作个人业务网站嵌入式软件开发和软件开发的区别
  • 株洲县建设局官方网站扫描网站漏洞的软件
  • 家具网站开发报告html用什么编译器编写
  • 现在什么行业发展前景最好一个新网站怎么做seo
  • html网站设计论文app开发费用
  • 赣榆哪里有做网站的电子商务网站规划设计方案
  • 青海网网站建设dedecms是什么
  • 做a手机视频在线观看网站做音乐网站赚钱吗
  • 高邮城乡建设局网站网站建设培训 南宁
  • 全网网站建设优化网站建设与维护论文
  • 电子商务网站开发实践软件开发学什么
  • 采集网站后台数据seo在线教学
  • 做网站需要的素材照片wordpress meta query
  • 南昌商城网站建设公司wordpress tw
  • 如何建立网站的英文版摄影网站哪个最好