|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
我用的单片机是:STM32F103C6T6A从网上买的核心板模块,LED灯拉到GPIOB>>>PB1口,下载程序后LED灯不亮,也不呼吸,是什么原因?' w8 x8 c# ^0 l k- r0 {$ ]! ]" _. z
void PWM_Init(u16 arr,u16 psc)5 N, B q$ K9 i! N$ `
{
5 ?4 [7 V2 I+ ]! I8 I1 x GPIO_InitTypeDef GPIO_InitStructure;
! ]: x9 t3 L( r TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
4 N# U6 _- W! y% c' [! n) O' O7 @ TIM_OCInitTypeDef TIM_OCInitStructure;
1 O6 Y/ B- @- l2 |. k8 v+ { C0 H RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);6 R, L; j/ D, s2 D
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB| RCC_APB2Periph_AFIO, ENABLE);2 W" j |; s$ v2 U. n
' e. ~/ J7 x5 \) c6 g4 ] V* p GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //TIM2_CH31 O; R: B1 U1 h; \4 ^6 }
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出. N, e) X2 c' n% a% N+ J! v5 S4 d
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; g6 q4 |& b4 [7 [! z! v X
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO
! T# t! }4 Y: C& h5 G+ d. e1 R: g! w ; z4 ?- E) z& X% v+ D, Z a
' d0 v$ r7 H, P& D! O' A6 @) m GPIO_PinRemapConfig(GPIO_PartialRemap_TIM1,ENABLE);//TIM1部分重映射
" ] h$ Y9 v, l4 A* e, U u
/ T. g J* y7 j6 k TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 计数到5000为500ms
$ A( u9 w9 ?8 s3 P7 M TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 10Khz的计数频率 % X( W9 g" b0 P4 R6 k
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim/ n6 I0 {1 n: q0 A8 s
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
9 |8 F5 [# |8 ~! d$ E$ H9 I8 X4 C TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位/ |( W. |- m; u
l1 I9 K& y& P3 H/ f7 x: p
' y0 ]; Z6 C7 q TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;
7 j i) j. C" U2 M0 e% ~ TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
1 a q+ n! O( W& r# ~% [. _1 X G TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;, [0 m/ g2 v" W8 ?4 T5 W) {
TIM_OC2Init(TIM1,&TIM_OCInitStructure);2 |" a9 E# |& D( v5 ~8 q- R2 V
# e4 ?4 D* Z. s! \
TIM_OC2PreloadConfig(TIM1,TIM_OCPreload_Enable);' Z* w% u) L; t) e' X* Q/ `; r
TIM_Cmd(TIM1,ENABLE);8 u) v8 w: z% h8 m
$ U4 V" t8 i8 }! L) p- J0 U, P& S0 }3 @" d
}
, N8 g5 N7 y! Y* ~//主函数:
" R) E9 R0 {. x1 M2 lint main(void)
- I0 ?# q1 f5 I. p/ k( p{
; e, p4 s! E# { u16 led0pwmval=0;! X3 ]8 Y5 Z# Q+ F# U! n% u$ w
u8 dir=1; # i- V* U0 n |- C
delay_init();
, l7 g- i) u3 z- _# S PWM_Init(899,0);
8 ^( l p" o l S2 q 3 o& f0 |7 {9 ]$ u
while(1)
8 z- A) e8 D' Q, H; ~( m/ ]0 u {
; ?: v; A/ n2 V5 p delay_ms(10); 1 g5 O6 f0 {! z s
if(dir)led0pwmval++;( B2 B$ Y6 G" T
else led0pwmval--;; Y: X. R+ {, A" D) ~7 _* x
* ?% k! R" U9 b2 j: j/ }& d; w
if(led0pwmval>300)dir=0;
+ l8 m9 T- q/ m/ }0 N if(led0pwmval==0)dir=1;
2 t1 {8 W: c5 {" } TIM_SetCompare2(TIM1,led0pwmval); 2 E3 `% G- a, v0 T5 |( b4 r1 o
}
- U: ], k( X1 [& l7 P. l
/ U! {2 d" P! M9 o, l
+ n6 U5 `3 ^3 F" Z- }
( P* F- F! ]3 H7 R/ {5 \}
" o' Q! x% f' n5 n6 H' h
2 p- g8 l' W2 q; |# \, ^ |
|