|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
我用的单片机是:STM32F103C6T6A从网上买的核心板模块,LED灯拉到GPIOB>>>PB1口,下载程序后LED灯不亮,也不呼吸,是什么原因?5 ~3 ?# g g9 o9 a @
void PWM_Init(u16 arr,u16 psc)
5 ^, Y8 q( C1 F* W8 u{
" {7 _7 @$ \( ~) X: K. [ GPIO_InitTypeDef GPIO_InitStructure;
) R/ h* k- i `3 R/ K$ e; P TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
+ \$ o! L' ~% v TIM_OCInitTypeDef TIM_OCInitStructure;
4 w# \0 s7 ~8 { RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
' O2 k& [! _* z+ e4 r. z3 ?: b RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB| RCC_APB2Periph_AFIO, ENABLE);# ~/ X7 S3 s6 G$ P, D. m5 c
5 K+ f+ U0 P. w. c9 R. e* W
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //TIM2_CH3
# T+ C' p3 q3 v1 h6 [ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
8 Q) J% I- i1 c1 T, `% g GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
, x* @* C' ^+ x; Q2 b# y2 M- z GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO
6 J* N2 r/ K& W) z( G! i7 q1 S , @! z/ |; ]5 G( a# R6 c3 m
h X3 b& f% p; E/ K
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM1,ENABLE);//TIM1部分重映射
+ m2 h* r E% f z - ]& Y* n$ A# f, Z
TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 计数到5000为500ms" U' V- P8 x' B/ U. v% ~
TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 10Khz的计数频率 1 `0 S2 q6 l6 }, F. r/ ~
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim! H( Q( U, w5 r/ S9 G, M* R
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
4 }$ R0 _3 B$ `7 {( U% g TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
9 r2 f; n* a! B; X( T! J
+ z8 G7 w% l, I+ Y: Q6 o
; H$ N1 q0 U3 e$ E* M! T! y TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;3 X9 N4 y; r0 S* ?! \# H# N% Z
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
% f) z0 M! X% W# [% C a0 b TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;; X% q X5 E; N' h
TIM_OC2Init(TIM1,&TIM_OCInitStructure);2 [* a' z( d0 Z4 \6 D8 M4 K. D
% K. Z) T4 {# C
TIM_OC2PreloadConfig(TIM1,TIM_OCPreload_Enable);* @6 G8 x( D! g+ x3 X
TIM_Cmd(TIM1,ENABLE);
/ E$ ?2 c, c _4 Z* `' q/ ^% \) \# ]; Q- X" C0 ~
9 J% G: r0 r/ X2 s, Q. Z
}
. @# V. D% p4 }6 ~, Q//主函数:
% O1 a) Z# ^3 A, eint main(void)
( _# c# w! v3 ~{
) W. p! h7 y/ i5 i/ E* s u16 led0pwmval=0;/ s4 p& S8 |& D& J+ `8 X- E2 H$ v# {
u8 dir=1; - d: V5 i- T- C1 p
delay_init();
( b5 w9 X2 `! D! c PWM_Init(899,0);( x# K. ^0 O+ {- v+ @$ E9 x
" \, s: r, Q2 A7 w! T
while(1). g; n# n- d! Z& H2 i& ]
{
: d( p9 @# K) t" d+ ~ delay_ms(10);
^+ {$ D7 q5 o+ d ~5 B if(dir)led0pwmval++;
8 D0 U" q# U% g else led0pwmval--;
# f* e- _0 y3 z- \! @( K
4 R4 Y. a0 ?0 K if(led0pwmval>300)dir=0;/ z2 c( Q' W2 X. z
if(led0pwmval==0)dir=1;
& U" Q9 q) A9 v* n0 |; D1 k r* X TIM_SetCompare2(TIM1,led0pwmval); " `& y6 x9 b) j$ p, i
}
# Q- q6 G i. {& k 3 i; ~* S- i5 C7 M2 d4 V6 h8 \2 m
. N& K. h% s1 \) N' U& w& |! g% a5 K* X8 A9 a5 }
}
! T6 f0 k' g$ }& @. r( P& {7 ]+ ^ }6 i3 I5 u$ u8 v2 t" s
|
|