|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
我用的单片机是:STM32F103C6T6A从网上买的核心板模块,LED灯拉到GPIOB>>>PB1口,下载程序后LED灯不亮,也不呼吸,是什么原因?( |1 g$ W9 ]- G
void PWM_Init(u16 arr,u16 psc)6 S4 o7 `. f K
{
7 p1 B$ X; ?/ ^) [ GPIO_InitTypeDef GPIO_InitStructure; h7 R4 T" n6 B5 F- O `
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
[% ^# Y. D9 c' J: c TIM_OCInitTypeDef TIM_OCInitStructure;& ~5 e4 r0 O$ O& j' ^
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
. p2 [* B- j$ Q+ G5 J/ J RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB| RCC_APB2Periph_AFIO, ENABLE);
. p0 C) P/ G, c/ J' I& P / ~( s3 J6 u4 u9 d5 o1 [
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //TIM2_CH3$ J* j8 s! L$ V' C% J
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
9 s2 C0 {" S" b GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;) u: t" G0 s$ A* a$ ?9 M! m3 N
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO. R, {& I" V3 R7 m( m/ J1 A
! ~# n% ^" u% b% Z
6 j# m* S: F$ o. @4 V' @; R- p7 k GPIO_PinRemapConfig(GPIO_PartialRemap_TIM1,ENABLE);//TIM1部分重映射 d* a# c3 X- k0 }
- B/ n% ?0 n9 W) s; i' T TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 计数到5000为500ms
7 n2 S/ k b; K6 A2 j- L5 ] TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 10Khz的计数频率
1 }4 t$ F" K8 S8 a. p' k' @# R TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim
0 | S" t: F( T2 P; n% L TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
. M9 w( \8 _" I" J) E6 Y TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位; L& ~5 ~, C: `- i. f
8 p5 i$ F8 b3 @0 j
+ x0 h' ~5 [( [( u4 P: K" X TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;: {2 h2 [5 [' h. Z2 ~+ ]
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;; R+ u: d- f6 ?0 y% [' k
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;# F$ U: C7 E3 K) E" q
TIM_OC2Init(TIM1,&TIM_OCInitStructure);
" R7 t* v( E) m! k# b8 Q% ?3 x# |
. y" o8 ~5 p% S9 }- e TIM_OC2PreloadConfig(TIM1,TIM_OCPreload_Enable);
8 v) u8 J3 _4 a' w5 m- Z3 y# _ TIM_Cmd(TIM1,ENABLE);& j* n' A1 A& A7 t/ _
* O" U. d8 c% Z0 ~! f8 ]
+ `$ {# l2 ^: ~* c}/ G6 U/ [, H) Q7 M5 r7 a. I
//主函数:
' X9 _% y$ U, z+ O: uint main(void)
' T1 V' h6 B% F8 P9 C) {{6 A- G% g% |0 _/ ~; U7 F# Z, {
u16 led0pwmval=0;
! |( C: q+ t5 d6 j u8 dir=1;
; K. ?1 z( h3 r delay_init();
' a, W% Q: u1 z5 t( H% w PWM_Init(899,0);
1 b4 L9 g' M0 U5 v8 o' _
. H& b" Q% U7 [( ]) o7 L, } while(1)# J* H3 J& f: @+ f
{
9 W) a/ {4 I0 L; r% x4 @" i" | delay_ms(10); 1 L, c6 w$ F, R. U* ^
if(dir)led0pwmval++;1 B ^7 A. l) J, e3 f1 h: ^/ [; k" ^
else led0pwmval--;
. W2 w a, D! t, L T5 O- P
) O% V" Q4 q6 E/ D( w2 T if(led0pwmval>300)dir=0;
" _) n }$ G7 F: M* }+ S: T2 s6 J if(led0pwmval==0)dir=1;
5 {& X9 O' @; _ TIM_SetCompare2(TIM1,led0pwmval); " \" L! B# i$ \6 |2 {
}
5 j* p8 L3 e7 c6 R* w ; z" s8 ?# e9 o
7 ^& }: @; `5 a- ]( X
" F8 }; Z2 d p8 b
}7 w8 |% x* w: i, A( [1 s) T/ P
- y* {9 Q* \' [/ k* o |
|