|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
我用的单片机是:STM32F103C6T6A从网上买的核心板模块,LED灯拉到GPIOB>>>PB1口,下载程序后LED灯不亮,也不呼吸,是什么原因?
' M {# o' M2 g: Mvoid PWM_Init(u16 arr,u16 psc)' f/ @9 m) W; j8 w/ M% z: x
{
+ a8 }2 [6 x1 g7 O GPIO_InitTypeDef GPIO_InitStructure;
0 v W5 r1 v2 e5 w$ r TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;3 d4 Z z5 A* Z0 t( h+ W
TIM_OCInitTypeDef TIM_OCInitStructure;
# H/ S- o, L* K; a, _5 U RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);- V/ p, P |) L6 a- D5 I2 G- v
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB| RCC_APB2Periph_AFIO, ENABLE);
9 v# a# \8 C5 O3 Y, ]- M1 u # q$ {% t4 {$ l: x
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //TIM2_CH3
& N6 T7 g9 e# y6 w2 l GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
2 F, k! X% {4 g% _, W GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;2 J3 R/ W2 c" e
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO3 p4 e1 J% ?+ J8 ~( V3 f
' C, z* J$ y' L- q0 A F& y
+ b6 p' {3 a1 z- g9 J. f GPIO_PinRemapConfig(GPIO_PartialRemap_TIM1,ENABLE);//TIM1部分重映射
+ H8 i0 w" f7 I9 w5 h 2 e* K) u# I* `* Q) D) K
TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 计数到5000为500ms$ d7 _, m5 Q) p6 S. s
TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 10Khz的计数频率 . ]4 q- e% R0 M$ y/ a+ n4 G
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim' W1 P/ n+ E8 s) O6 `) m
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式: ^9 Z0 y: _1 }7 ^
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位2 R' c3 h; S5 C2 @
% w+ @' l; \( J# S
% i0 G7 g; `+ D/ m6 T
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;$ Z6 o9 g/ v% H) a; T
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
! z, x/ }! D1 t TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
% B$ B! ^2 \8 o6 D+ U- G% Y/ K TIM_OC2Init(TIM1,&TIM_OCInitStructure);
2 [1 |! B0 c& D0 j4 _+ h( B' c & Q% |8 B+ p, c; ^% H, O
TIM_OC2PreloadConfig(TIM1,TIM_OCPreload_Enable);- F- z. k+ l. t& r4 a
TIM_Cmd(TIM1,ENABLE);; c6 w& p: U8 D. k: x$ I5 f
8 W. i7 W( H* @* y% b. i! H: H1 D! `3 e5 L" E
}) M6 C& h0 N1 b& Y9 ]
//主函数:! U' p/ ~. W4 h1 W- b
int main(void)
" [ Q9 S0 H! X3 c{# D" t4 ^( n D k
u16 led0pwmval=0;" j3 Y/ o/ Y. |) ^" x! Q
u8 dir=1; 1 _1 V' y% q. G' D5 v% }( i* n
delay_init();
4 D$ I' W5 {0 e- ?; K7 [( Y PWM_Init(899,0);
/ f% D) ^7 w( j) u: \) r/ p
! @% [/ K, Q+ n1 T while(1)
3 R; {1 Z% I0 Y% l+ _ {1 j5 N% L( `' N7 b3 I' ?
delay_ms(10); 3 S/ r! R: t! I+ b
if(dir)led0pwmval++;
8 `; h& D% t e) D. P M else led0pwmval--;: `* m8 Y4 ]6 J& C
9 k* [3 v; h: `* f
if(led0pwmval>300)dir=0;& e* J R: q! b* d; f2 G+ Q3 O
if(led0pwmval==0)dir=1;
& g; O2 C+ W6 C3 i9 B# G TIM_SetCompare2(TIM1,led0pwmval);
, w" H( ~8 R2 F1 [; K, k$ | } 7 X$ V9 L% }- J
0 B% ^* O" o) h" z) h4 d" Z U. t, b) K
2 Y) M! T4 I7 V5 Y
}
$ `. u( G# {- }3 Q% g3 m1 y+ V# E* l% }6 L F
|
|