你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F103VET ETR计脉冲数程序

[复制链接]
mengyu139 发布时间:2014-11-9 10:47
  1. /******************** (C) COPYRIGHT 2012 WildFire Team **************************

  2. **********************************************************************************/
  3. #include "stm32f10x.h"
  4. #include "stm32f10x_conf.h "

  5. void Delay(__IO u32 nCount);
  6. void TIM4_EIR_Init(void);
  7. void PA8_INIT(void);

  8. uint16_t COUNT = 0;

  9. int main(void)
  10. {       
  11.         PA8_INIT();
  12.         TIM4_EIR_Init();
  13.         while (1)
  14.         {       
  15.                 TIM_SetCounter(TIM4, 0); // CLEAR
  16.                
  17.                 Delay(200);
  18.                 GPIO_SetBits(GPIOA, GPIO_Pin_8);
  19.                 Delay(200);
  20.                 GPIO_ResetBits(GPIOA, GPIO_Pin_8);
  21.                 Delay(200);
  22.                 GPIO_SetBits(GPIOA, GPIO_Pin_8);
  23.                 Delay(200);
  24.                 GPIO_ResetBits(GPIOA, GPIO_Pin_8);
  25.                 Delay(200);
  26.                 GPIO_SetBits(GPIOA, GPIO_Pin_8);
  27.                 Delay(200);
  28.                 GPIO_ResetBits(GPIOA, GPIO_Pin_8);
  29.                 Delay(200);
  30.                 GPIO_SetBits(GPIOA, GPIO_Pin_8);
  31.                 Delay(200);
  32.                 GPIO_ResetBits(GPIOA, GPIO_Pin_8);
  33.                
  34.                
  35.                 COUNT=TIM_GetCounter(TIM4);
  36.                 TIM_SetCounter(TIM4, 0); // CLEAR
  37.                 COUNT=TIM_GetCounter(TIM4);
  38.                 TIM_SetCounter(TIM4, 0); // CLEAR       
  39.         }
  40. }

  41. void Delay(__IO u32 nCount)         //简单的延时函数
  42. {
  43.         for(; nCount != 0; nCount--);
  44. }


  45. /*
  46. void TIM4_EIR_Init(void)
  47. {
  48.         GPIO_InitTypeDef GPIO_InitStructure;
  49.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  50.    
  51.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
  52.      
  53.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);

  54.                                                         //Config PE0 为浮空输入
  55.                                 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  56.                                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  57.                                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  58.                                 GPIO_Init(GPIOE, &GPIO_InitStructure);

  59.                                 TIM_DeInit(TIM4);
  60.                                 TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
  61.                                 TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
  62.                                 TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
  63.                                 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  64.                                 TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);  // Time base configuration
  65.    
  66.                                 TIM_ETRClockMode2Config(TIM4, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);   
  67.                                 TIM_SetCounter(TIM4, 0);   
  68.                                 TIM_Cmd(TIM4, ENABLE);
  69.         
  70. }
  71. */
  72. void TIM4_EIR_Init(void)
  73. {
  74.        
  75.         GPIO_InitTypeDef GPIO_InitStructure;
  76.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  77.   /////////////////////////////////////////////////////////////////////////////
  78.                         /*        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);

  79.                                 TIM_CounterModeConfig(TIM3,TIM_CounterMode_Up);
  80.                                 TIM_SetAutoreload(TIM4,9);

  81.                                 TIM_TIxExternalClockConfig(TIM4,TIM_TIxExternalCLK1Source_TI2,TIM_ICPolarity_Rising,0);

  82.                                 TIM_Cmd(TIM4,ENABLE);
  83.                                 TIM_ITConfig(TIM4,TIM_IT_CC2|TIM_IT_Update,ENABLE);
  84.         */
  85.         /////////////////////////////////////////////////////////////////////////////
  86.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
  87.      
  88.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);

  89.                                                         //Config PE0 为浮空输入
  90.                                 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  91.                                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  92.                                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  93.                                 GPIO_Init(GPIOE, &GPIO_InitStructure);

  94.                                 TIM_DeInit(TIM4);
  95.                                 TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
  96.                                 TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
  97.                                 TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
  98.                                 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  99.                                 TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);  // Time base configuration
  100.    
  101.                           TIM_ETRClockMode2Config(TIM4, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 10);   
  102.                                 TIM_SetCounter(TIM4, 0);   
  103.                                 TIM_Cmd(TIM4, ENABLE);

  104.         
  105. }
  106. void PA8_INIT(void)
  107. {               
  108.         /*定义一个GPIO_InitTypeDef类型的结构体*/
  109.         GPIO_InitTypeDef GPIO_InitStructure;

  110.         /*开启GPIOA的外设时钟*/
  111.         RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);

  112.         /*选择要控制的GPIOA8引脚*/                                                                                                                          
  113.           GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;

  114.         /*设置引脚模式为通用推挽输出*/
  115.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   

  116.         /*设置引脚速率为50MHz */   
  117.           GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  118.         /*调用库函数,初始化GPIOA*/
  119.           GPIO_Init(GPIOA, &GPIO_InitStructure);                  

  120.         /* 关闭所有led灯        */
  121.         GPIO_SetBits(GPIOA, GPIO_Pin_8);         
  122. }



  123. /******************* (C) COPYRIGHT 2012 WildFire Team *****END OF FILE************/
复制代码


收藏 1 评论4 发布时间:2014-11-9 10:47

举报

4个回答
沐紫 回答时间:2014-11-11 17:26:25
楼主分享了好多代码呀,赞个
rianboe 回答时间:2014-11-11 19:43:25
谢谢分享!!!
随风-368133 回答时间:2014-11-11 19:45:37
楼主辛苦了 谢谢分享
6874577 回答时间:2014-12-6 15:37:59
看看不知道接口怎么搞

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版