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

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
看看不知道接口怎么搞

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

官网相关资源

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