由于项目需要,需要发出固定个数的PWM脉冲,因为未接触过网上搜集的也多不行,后来根据官方手册调试成功。使用的第一种方式,后续的测试后放出。- W! N8 J' U b) B8 t void PWMS8_Init()8 d) A; W; F' l& U! V# V {0 [3 v' M( F1 L7 M$ U2 m) K8 R5 A GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;* f4 X @, e' i; m TIM_OCInitTypeDef TIM_OCInitStructure; /* TIM4 clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE); /* GPIOB clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);( a! O; s2 {" w /* TIM4_CH1 pin (PB.06) configuration */0 ~' R9 B" v- u& d1 z8 j5 a GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;' i. F s8 U% z( p GPIO_Init(GPIOC, &GPIO_InitStructure); TIM_TimeBaseStructure.TIM_Period = 200; TIM_TimeBaseStructure.TIM_Prescaler = 7200; TIM_TimeBaseStructure.TIM_ClockDivision = 0;0 a8 `% A4 Y9 @ TIM_TimeBaseStructure.TIM_RepetitionCounter=0;2 _3 ^: Y# n9 } TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseStructure.TIM_RepetitionCounter = 5; TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure); TIM_GenerateEvent(TIM8,TIM_EventSource_Update); TIM_InternalClockConfig(TIM8);! D9 ^! a5 v+ b7 n/ H1 V6 u TIM_SelectOCxM(TIM8,TIM_Channel_2,TIM_OCMode_PWM1); /* PWM1 Mode configuration: Channel2 */ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;' a0 e. O+ c8 p2 T, y, Z$ |. F6 [" V3 r TIM_OCInitStructure.TIM_Pulse = 100; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;0 K7 p- K% e5 V3 ^ TIM_OC2Init(TIM8, &TIM_OCInitStructure); TIM_OC2PreloadConfig(TIM8, TIM_OCPreload_Enable);, j* ^' c* j! I9 X: P1 y TIM_ARRPreloadConfig(TIM8, ENABLE);" q, f' T0 @% `& e1 | /* TIM8 enable counter */ TIM_CtrlPWMOutputs(TIM8,ENABLE);" U1 j/ m$ i! x+ Q9 J6 \0 Z: U # }2 u" j, Y0 i) E. N/ j TIM_SelectOnePulseMode(TIM8,TIM_OPMode_Single); TIM_Cmd(TIM8, ENABLE); }- D8 k4 f/ r9 N7 } 以上是核心代码,自己可根据需要修改,生成不同个数以及频率的脉冲。 |
éç¨å®æ¶å¨.pdf
下载1.81 MB, 下载次数: 876
这个功能只对高级定时器起作用,普通定时器实现不了
你只需要对应的修改引脚就可以了啊
RCR寄存器是8位的,怎么可能写成1000呢
还是不明白,加入我要输出1000个脉冲,要修改什么呢
我修改了不起作用
你要实现什么?传上来看看