|
由于项目需要,需要发出固定个数的PWM脉冲,因为未接触过网上搜集的也多不行,后来根据官方手册调试成功。使用的第一种方式,后续的测试后放出。) P' g3 G5 I/ v2 K% V5 B) V void PWMS8_Init()! D; l! W, E) A1 n: t. e- m {4 s, x n3 ?/ c5 c: G GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;3 g$ Z. l+ T' R7 p' l( ?$ y9 O TIM_OCInitTypeDef TIM_OCInitStructure; /* TIM4 clock enable */: j$ e1 b7 C6 m! W/ Y) i RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE); /* GPIOB clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);' R C. e/ U# P: Z, Y2 P7 c /* TIM4_CH1 pin (PB.06) configuration */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;: f, f- O0 d1 N; O GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;4 f2 U5 A% d" F+ m, j M GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure);7 S A" P$ R- t# v ! Z6 R+ x- l9 A0 p# M TIM_TimeBaseStructure.TIM_Period = 200;/ @. {3 S5 p! z7 i. N+ X TIM_TimeBaseStructure.TIM_Prescaler = 7200; TIM_TimeBaseStructure.TIM_ClockDivision = 0;/ v6 \( X( { x7 W/ w TIM_TimeBaseStructure.TIM_RepetitionCounter=0;* `+ X j, m |' C( O' x TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;; x+ B/ o2 P8 ^ TIM_TimeBaseStructure.TIM_RepetitionCounter = 5; TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);* r' F! I: h6 P5 N# o- b5 G4 K 8 c- }; {- }( d: y7 l TIM_GenerateEvent(TIM8,TIM_EventSource_Update); TIM_InternalClockConfig(TIM8); TIM_SelectOCxM(TIM8,TIM_Channel_2,TIM_OCMode_PWM1); /* PWM1 Mode configuration: Channel2 */* c0 x- S8 Y' c) Y8 U6 W7 |9 Q TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;9 L! d& T( V! A8 |* M TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 100; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;; T0 p" D2 Q# x: {2 V TIM_OC2Init(TIM8, &TIM_OCInitStructure); TIM_OC2PreloadConfig(TIM8, TIM_OCPreload_Enable);: D( j( l8 O0 ~) U' h! l TIM_ARRPreloadConfig(TIM8, ENABLE); /* TIM8 enable counter */ Q+ n2 Q& m& V; \ TIM_CtrlPWMOutputs(TIM8,ENABLE); & L+ w8 u) N2 J3 @$ E# g TIM_SelectOnePulseMode(TIM8,TIM_OPMode_Single); TIM_Cmd(TIM8, ENABLE); E7 L6 v8 ]; \$ [. h } ( h0 z0 v, U4 c 以上是核心代码,自己可根据需要修改,生成不同个数以及频率的脉冲。 |
éç¨å®æ¶å¨.pdf
下载1.81 MB, 下载次数: 876
微信公众号
手机版
这个功能只对高级定时器起作用,普通定时器实现不了
你只需要对应的修改引脚就可以了啊
RCR寄存器是8位的,怎么可能写成1000呢
还是不明白,加入我要输出1000个脉冲,要修改什么呢
我修改了不起作用
你要实现什么?传上来看看