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

许昌做网站团队武汉seo网站推广

许昌做网站团队,武汉seo网站推广,西安旅游团报名五日游价格,返佣网站都是自己做的1、实验目的 1)使用 TIM1 触发 ADC,ADC 采集的数据通过DMA 传至内存,然后通过串口打印出采集的数据; 2)学会 DMA 传输数据并将数据进行保存; 3)验证ADC 的采样率与实际设置的是否相符。 2、…

1、实验目的

1)使用 TIM1 触发 ADC,ADC 采集的数据通过DMA 传至内存,然后通过串口打印出采集的数据;  

2)学会 DMA 传输数据并将数据进行保存;

3)验证ADC 的采样率与实际设置的是否相符。


2、硬件资源

1)指示灯

2)ADC

3)DMA

4)TIM

5)杜邦线


3、软件设计

[cpp] view plaincopy
  1. void  Adc_Configuration(void)  
  2. {     
  3.   DMA_InitTypeDef DMA_InitStructure;  
  4.   ADC_InitTypeDef   ADC_InitStructure;    
  5.   GPIO_InitTypeDef GPIO_InitStructure;   
  6.   
  7.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC   | RCC_APB2Periph_AFIO, ENABLE);      
  8.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;  
  9.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;  
  10.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  11.   GPIO_Init(GPIOC, &GPIO_InitStructure);  
  12.       
[cpp] view plaincopy
  1.   /* Enable DMA1 clock */  
  2.   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);  
  3.       
  4.   DMA_DeInit(DMA1_Channel1);                                        /* 复位DMA1寄存器到缺省状态 */  
  5.   DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;                   /* 选择ADC1的数据寄存器作为源 */  
  6.   DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&ADC_Sample.Ch1Buf;                   /* 目标地址 */  
  7.   DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;                            /* 设置DMA传输方向,外设(ADC)作为源 */  
  8.   DMA_InitStructure.DMA_BufferSize = SAMPLE_COUNT;                              /* 设置缓冲区大小 */  
  9.   DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;              /* 外设地址不自增 */  
  10.   DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                       /* 存储器地址需要自增 */  
  11.   DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;   /* 选择外设传输单位:16bit */  
  12.   DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;           /* 选择内存传输单位:16bit */  
  13.   DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;                                 /* 无需循环模式   */  
  14.   DMA_InitStructure.DMA_Priority = DMA_Priority_High;                           /* 选择DMA优先级 */  
  15.   DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;                                  /* DMA传输类型,不是内存到内存 */  
  16.   DMA_Init(DMA1_Channel1, &DMA_InitStructure);  
  17.   
  18.   /* Enable DMA1 channel1 */  
  19.   DMA_Cmd(DMA1_Channel1, ENABLE);  
  20.       
  21.       
  22.  /* 配置ADC1  */  
  23.       
  24.   /* ADCCLK = PCLK2/2 */  
  25.   RCC_ADCCLKConfig(RCC_PCLK2_Div2);     /* ADCCLK = PCLK2/2 = 36MHz */  
  26.   
  27.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);  
  28.   
  29.   ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;  
  30.   ADC_InitStructure.ADC_ScanConvMode = DISABLE;  
  31.   ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;                       /* 连续转换静止 */  
  32.   ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC3;     /* 选择TIM1的CC3做触发 */  
  33.   ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;                    /* 数据右对齐,高位为0 */  
  34.   ADC_InitStructure.ADC_NbrOfChannel = 1;                                   /* 1个通道 */  
  35.   ADC_Init(ADC1, &ADC_InitStructure);  
  36.   
  37.   /* ADC1 regular channels configuration */  
  38.   ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_1Cycles5);  
  39.   
  40.   /* Enable ADC1 external trigger conversion */  
  41.   ADC_ExternalTrigConvCmd(ADC1, ENABLE);  
  42.   
  43.   /* 使能 ADC1 */  
  44.   ADC_Cmd(ADC1, ENABLE);  
  45.   
  46.   /* Enable ADC1 DMA */  
  47.   ADC_DMACmd(ADC1, ENABLE);  
  48.   
  49.   /* 使能 ADC1 复位校准寄存器 */  
  50.   ADC_ResetCalibration(ADC1);  
  51.   /* 检测复位校准寄存器 */  
  52.   while(ADC_GetResetCalibrationStatus(ADC1));  
  53.   
  54.   /* 开始 ADC1 校准 */  
  55.   ADC_StartCalibration(ADC1);  
  56.   /* 等待校准结束 */  
  57.   while(ADC_GetCalibrationStatus(ADC1));  
  58.       
  59.           
  60.   /* 配置采样触发定时器,使用TIM1 CC1 */  
  61.   ADC_SampleRate(ADC_Sample.SampleFreq);    /* 修改采样频率 */  
  62. }                   
  63.   
  64. /* 
  65.  * Function Name  : ADC_SampleRate 
  66.  * Description    : 修改ADC的采样频率 
  67.  * Input          : - freq: 采样频率 单位Hz 
  68.  * Output         : None 
  69.  * Return         : None 
  70.  * Attention          : None 
  71.  */  
  72. void ADC_SampleRate(uint32_t freq)  
  73. {  
  74.   /* 配置定时器1第3通道CC3作为ADC1的触发源 */     
  75.   uint16_t Period;    
  76.   TIM_OCInitTypeDef  TIM_OCInitStructure;  
  77.   TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;  
  78.   
  79.   TIM_Cmd(TIM1, DISABLE);  
  80.   
  81.     /* 采样频率计算公式 : period = 72000000 / freq ; 1200 == 60KHz 采样频率 */  
  82.   Period = 72000000 / freq;       
  83.   
  84.   /* Enable TIM1 clock */  
  85.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);  
  86.   
  87.   TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);   
  88.   TIM_TimeBaseStructure.TIM_Period = Period;            
  89.   TIM_TimeBaseStructure.TIM_Prescaler = 0;        /* 计数频率 = 72000 000 / 18 = 4000 000    */  
  90.   TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;      
  91.   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;    
  92.   TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);  
  93.   
  94.   /* TIM1 channel1 configuration in PWM mode */  
  95.   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;   
  96.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;                  
  97.   TIM_OCInitStructure.TIM_Pulse = TIM_TimeBaseStructure.TIM_Period / 2;   
  98.   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;           
  99.   TIM_OC3Init(TIM1, &TIM_OCInitStructure);  
  100.   
  101.   /* TIM1 counter enable */  
  102.   TIM_Cmd(TIM1, ENABLE);  
  103.   
  104.   /* TIM1 main Output Enable */  
  105.   TIM_CtrlPWMOutputs(TIM1, ENABLE);    
  106. }  


采样率的确定:

由两部分组成:ADC 转换时间 + 定时器的触发需要的时间


4、验证

验证程序是自己通过 DAC 产生一个正弦波,频率为 10KHz,设置ADC的采样频率为900KHz,通过串口打印出来的数据,可以确定一个周期的点数在90个左右,符合要求。
http://www.lbrq.cn/news/2759203.html

相关文章:

  • 网站seo策略网络营销的营销理念
  • 网站建设流程分为三个步骤国内免费推广产品的网站
  • 职业生涯规划大赛演讲稿5分钟深圳网站seo服务
  • 关于网站空间百度搜索页
  • 怎么样用ps做网站百度网页版网址
  • 成都市网站制作一站式网络营销
  • 网站与微信结合百度官网网站
  • 只做一种产品的网站百度推广怎么弄
  • 产品展示型网站有哪些百度seo搜索引擎优化
  • 大连做网站谁家售后好今日头条国际军事新闻
  • 武汉 门户网站建设市场调研分析报告怎么写
  • 衡水教育行业网站建设电脑培训班附近有吗
  • 大悟网站开发湖南正规seo优化
  • dede网站收录百度法务部联系方式
  • 网站页面术语长沙网站开发制作
  • 婚恋网站制作要多少钱长沙做搜索引擎的公司
  • 手机网站优化免费数据分析网站
  • 学做缝纫的网站云南网络营销公司哪家好
  • 网站做百度竞价引流费用多少钱外包接单平台
  • the 7 wordpress主题教程广东网站优化公司
  • wordpress本地调试慢企业网站排名优化公司
  • 杭州做网站的好公司有哪些广州网络推广平台
  • 东莞住建局网站谷歌搜索引擎免费入口 香港
  • 课程网站开发网站关键词排名seo
  • 上海景泰建设股份有限公司网站镇江网站建站
  • 政府部门网站建设特点seo排名点击软件推荐
  • 廊坊企业网站建设公司百度网盘网页版入口
  • 上海的设计网站网站优化推广方法
  • 青海公路工程建设总公司网站站长工具域名解析
  • 制作网站的公司做网站去哪里找磁力搜索器在线
  • 数据赋能(401)——大数据——持续学习与优化原则
  • 实践笔记-VSCode与IDE同步问题解决指南;程序总是进入中断服务程序。
  • 英特尔公司Darren Pulsipher 博士:以架构之力推动政府数字化转型
  • 【FreeRTOS】刨根问底6: 应该如何防止任务栈溢出?
  • Java 基础 -- Java 基础知识
  • 【完整源码+数据集+部署教程】无人机航拍视角洪水检测与受灾房屋识别图像分割救援指导系统源码和数据集:改进yolo11-DCNV2