由于项目需要,需要发出固定个数的PWM脉冲,因为未接触过网上搜集的也多不行,后来根据官方手册调试成功。使用的第一种方式,后续的测试后放出。 void PWMS8_Init()7 b4 s: B- [1 d+ Q {/ {0 e" D. E6 g GPIO_InitTypeDef GPIO_InitStructure;1 G5 l# D% z& t4 A( [$ S TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;# b3 b2 Q# M0 j; f8 v' s5 o TIM_OCInitTypeDef TIM_OCInitStructure; /* TIM4 clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE);. m# S; r9 J1 _$ `1 d /* GPIOB clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);- b6 L% l' c+ P/ d& H /* TIM4_CH1 pin (PB.06) configuration */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; c# g8 a1 O/ H3 N" F3 B GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;5 @, n; c; F$ G! ^4 d- a( Q GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure);. G6 I1 q. [6 v5 W6 l4 e3 i- p! T " d% t- r% u! _ TIM_TimeBaseStructure.TIM_Period = 200; TIM_TimeBaseStructure.TIM_Prescaler = 7200;$ J1 M9 @( R6 C, W+ S4 Z# p& K TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_RepetitionCounter=0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseStructure.TIM_RepetitionCounter = 5; TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);9 h" V" l, P8 {, l2 Y 5 c) k5 y4 L) D TIM_GenerateEvent(TIM8,TIM_EventSource_Update); TIM_InternalClockConfig(TIM8); TIM_SelectOCxM(TIM8,TIM_Channel_2,TIM_OCMode_PWM1); @% B& a# F& A8 }3 {9 ]" z /* PWM1 Mode configuration: Channel2 *// Q* _6 [( j8 x TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 100; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; TIM_OC2Init(TIM8, &TIM_OCInitStructure); TIM_OC2PreloadConfig(TIM8, TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM8, ENABLE); /* TIM8 enable counter */ TIM_CtrlPWMOutputs(TIM8,ENABLE); TIM_SelectOnePulseMode(TIM8,TIM_OPMode_Single);& J6 ~. }/ O" F) b( F; k: _) A# N& o TIM_Cmd(TIM8, ENABLE); } 以上是核心代码,自己可根据需要修改,生成不同个数以及频率的脉冲。+ l3 N, `8 C5 R% j) } |
éç¨å®æ¶å¨.pdf
下载1.81 MB, 下载次数: 876
这个功能只对高级定时器起作用,普通定时器实现不了
你只需要对应的修改引脚就可以了啊
RCR寄存器是8位的,怎么可能写成1000呢
还是不明白,加入我要输出1000个脉冲,要修改什么呢
我修改了不起作用
你要实现什么?传上来看看