|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
我用的单片机是:STM32F103C6T6A从网上买的核心板模块,LED灯拉到GPIOB>>>PB1口,下载程序后LED灯不亮,也不呼吸,是什么原因?
6 J: [6 O* G$ W7 U0 N# n' ~9 A8 @void PWM_Init(u16 arr,u16 psc)
6 g) x6 Y6 n1 T; U1 j{! L: l0 s1 f8 P2 F$ U' x
GPIO_InitTypeDef GPIO_InitStructure;
4 H+ r7 j" G" L* z* U" G) Q) B TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
3 z% e6 e( V) U$ Q2 P TIM_OCInitTypeDef TIM_OCInitStructure;
7 m. Q7 M( Q, ^! K' e2 k7 ? RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
5 V& s) A/ A5 E! g! }8 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB| RCC_APB2Periph_AFIO, ENABLE);5 U7 w8 L$ v5 d a- G/ K8 Y
& S; m: {( ?: x% ^# Z& w
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //TIM2_CH3
$ Y) c; i+ }9 y7 l; [ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出' q- }6 J' \0 w; O, m
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;/ }% c% e1 p& }+ s$ r
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO
$ E8 e4 C% G5 o; \* u( A( J" G
# u' f5 e+ B) r
" |6 R( \/ U' Q& u# Y GPIO_PinRemapConfig(GPIO_PartialRemap_TIM1,ENABLE);//TIM1部分重映射
7 n! \& Q" j4 `2 J# m+ B, t . S4 d8 j5 K+ r2 U% a8 |5 C8 X
TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 计数到5000为500ms- B3 g: N* K: q4 q" u1 p/ G
TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 10Khz的计数频率
0 m3 m# X; N; t. g- d& q TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim) B8 y: v6 n) b7 ]% b& S% M
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式- v# F2 e) t( [; P8 D8 A" ]; M
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位/ N/ E: Y" l" S. ~# S. i: T
4 N, E% Y- c; ~" R4 S: c
3 B G8 t& i! m4 I# b TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;
5 P9 g: q. F0 N R8 C1 N TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;: P! {- M5 R m
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
2 D* U/ `1 U+ p4 o% R/ t" q TIM_OC2Init(TIM1,&TIM_OCInitStructure);' Q% r, `" ~0 B p1 R0 T/ I' D
7 b! [$ h3 s! W( h; o
TIM_OC2PreloadConfig(TIM1,TIM_OCPreload_Enable);+ H% n) [ K& ~
TIM_Cmd(TIM1,ENABLE);5 D2 A/ f2 ]7 a3 D
& H* U4 f! D7 Q8 t$ m/ n" F
! m9 L% E6 Q6 k/ k: A) }) L}
0 v R) @' D- T" T" ]//主函数:- v+ S+ F% ^- n7 G9 |: R
int main(void)- z o% n$ ]% {( N0 F% i, q; G
{5 M8 A2 b& g6 X3 ?6 V4 Z
u16 led0pwmval=0;
* }, t/ w2 P. L" y* Y" L u8 dir=1;
) y( ?1 o4 s. Q( D: y2 \ delay_init();
9 F/ ?1 k- n0 W O6 f7 @ PWM_Init(899,0);
& |& s9 [, f7 I; n5 W' ~7 D6 L- e 3 o2 `, L) n8 P5 G) ^" |
while(1)
4 k/ y5 v" l$ w. c* K" c r2 d4 E {
. {1 N# y) D1 j Q6 z delay_ms(10);
' w& q5 A& i, j2 E) _ d if(dir)led0pwmval++;& E2 J+ z5 o! ?0 E4 C1 P
else led0pwmval--;
2 L5 i4 b- Q7 z1 ]5 t5 w
9 I7 r8 P5 d2 O" t1 w9 D8 { if(led0pwmval>300)dir=0;
3 m8 S8 y$ g1 @ d if(led0pwmval==0)dir=1;
7 W8 J s0 E4 q, i# E+ G) \3 _6 C% s TIM_SetCompare2(TIM1,led0pwmval);
n# m q8 \! o s }
5 c& n4 P. s* |% `. b $ i' L4 L6 c4 b
% E$ b* l0 h. [& ]9 t* y
/ G. ]( v0 v4 M. h& e
}
9 i3 D% S5 e; Y( E: o& i: w6 A0 Q( X2 W: L
|
|