STM32f103的数电采集电路的TIMER定时器的使用与时序控制的程序

2017-09-12 15:30:33来源: eefocus 关键字:澳门赌博网站  数电采集  定时器  时序控制

本文地址:http://www.tianzhongchem.com/mcu/article_2017091234388.html
文章摘要:STM32f103的数电采集电路的TIMER定时器的使用与时序控制的程序 ,英语试题色弱花被,号声槐花宏观政策。

STM32 的通用定时器是一个通过可编程预分频器(PSC)驱动的 16 位自动装载计数器(CNT)构成。STM32 的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和 PWM)等。使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。 STM32 的每个通用定时器都是完全独立的,没有互相共享的任何资源。

通用定时器设置的一般步骤可以总结为如下几个步骤:

1.定时器时钟使能

2.设置定时参数

3.定时器工作方式初始化

4.定时器中断方式使能

5.开启中断并且初始化 NVIC(如果需要开启中断才需要这个步骤)

6.使能定时器

7.编写中断处理函数

前端采集模块采用了TIM4定时器作为USART1串口的定时发送,定时间隔为10ms,采用中断方式在中断服务函数里面使能USART1的DMA通道,使USART1能自动完成数据的发送任务,减少CPU的工作量和大大减少中断转跳时间,同时和ADC采样时序是相互独立的,不受ADC采样的间隔影响,确保了数据间隔时间的稳定性。


  1. //通用定时器中断初始化  

  2. //这里时钟选择为APB1的2倍,而APB1为36M  

  3. //arr:自动重装值。  

  4. //psc:时钟预分频数  

  5. //这里使用的是定时器4!  

  6. void TIM4_Int_Init(u16 arr,u16 psc)  

  7. {  

  8.   TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;  

  9.     NVIC_InitTypeDef NVIC_InitStructure;  

  10.   

  11.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //时钟使能  

  12.   

  13.     TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值    计数到5000为500ms  

  14.     TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值  10Khz的计数频率    

  15.     TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim  

  16.     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式  

  17.     TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位  

  18.    

  19.     TIM_ITConfig(  //使能或者失能指定的TIM中断  

  20.         TIM4, //TIM4  

  21.         TIM_IT_Update ,  

  22.         ENABLE  //使能  

  23.         );  

  24.     NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;  //TIM4中断  

  25.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //先占优先级0级  

  26.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //从优先级3级  

  27.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能  

  28.     NVIC_Init(&NVIC_InitStructure);  //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器  

  29.   

  30.     TIM_Cmd(TIM4, ENABLE);  //使能TIMx外设  

  31.                                

  32. }  




  1. uint8_t HexTable[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};   //16进制字符表  

  2.   

  3. void TIM4_IRQHandler(void)   //TIM4中断  

  4. {  

  5.     if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源   

  6.     {  

  7.         //进行数据读取并转换成需要发送的字符  

  8.         AdcChar[0] = HexTable[(adcValue>>12)&0x0f];  

  9.         AdcChar[1] = HexTable[(adcValue>>8)&0x0f];  

  10.         AdcChar[2] = HexTable[(adcValue>>4)&0x0f];  

  11.         AdcChar[3] = HexTable[(adcValue)&0x0f];  

  12.         //将数据加载到串口发送数组  

  13.         SendBuff[0] = AdcChar[0];  

  14.         SendBuff[1] = AdcChar[1];  

  15.         SendBuff[2] = AdcChar[2];  

  16.         SendBuff[3] = AdcChar[3];  

  17.         //USB_SendString("Connect to stm32 test the max lenght and more over 22 Byte.");  

  18.         DMA_USART_Enable(DMA1_Channel4);  

  19.     }  

  20.     TIM_ClearITPendingBit(TIM4, TIM_IT_Update  );  //清除TIMx的中断待处理位:TIM 中断源   

  21. }  



为了保证数据的采样率的稳定性,这里使用TIM4进行采样率的控制。TIM4定时一到,立即进入中断响应,在中断函数里,将ADC采样的数组空间进行数据读取,并加载在USART发送数据中,ADC采样配置详情见   http://www.tianzhongchem.com/817/devintt/article/details/46997985

这里的数据报文采用了进制的字符形式发送,通信数据报文如下:(这里是双通道ADC的报文,单通道的报文则取前5位)

报文数据位

1

2

3

4

5

6

7

8

9

10

内容

P

Data3

Data2

Data1

Data0

Q

Data7

Data6

Data5

Data4

数据意义

ADC1数据标识

ADC1数值16进制字符第3位

ADC1数值16进制字符第2位

ADC1数值16进制字符第1位

ADC1数值16进制字符第0位

ADC2数据标识

ADC2数值16进制字符第3位

ADC2数值16进制字符第2位

ADC2数值16进制字符第1位

ADC2数值16进制字符第0位


注意:Data7、Data6、Data5、Data、Data3、Data2、Data1、Data0 是字符形式

eg:ADC1 数据 1024 mV => 0x400

ADC2 数据 2048 mV => 0x800

数据报文发送:P0400Q0800


关键字:STM32f103  数电采集  定时器  时序控制

编辑:什么鱼 引用地址:http://www.tianzhongchem.com/mcu/article_2017091234388.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32f103的数电采集电路的双ADC的设计与使用
下一篇:STM32f103的数电采集电路的USART的使用与蓝牙的连接的程序

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利
推荐阅读
全部
STM32f103
数电采集
定时器
时序控制

小广播

独家专题更多

东芝在线展会——芯科技智社会创未来
东芝在线展会——芯科技智社会创未来
2017东芝PCIM在线展会
2017东芝PCIM在线展会
TI车载信息娱乐系统的音视频解决方案
TI车载信息娱乐系统的音视频解决方案
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright ? 2005-2017 EEWORLD.com.cn, Inc. All rights reserved