|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
我用的单片机是:STM32F103C6T6A从网上买的核心板模块,LED灯拉到GPIOB>>>PB1口,下载程序后LED灯不亮,也不呼吸,是什么原因?
% i! W8 T" K. v1 ?% Q" z& Rvoid PWM_Init(u16 arr,u16 psc)
! A$ [- \. ~4 K+ ?{
8 C: x4 ^- i4 T" h b9 N GPIO_InitTypeDef GPIO_InitStructure;
- z) p' n5 [. |9 t' B# `. N0 u. v TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
: J: R7 h5 i" x1 d! V2 n% W4 l TIM_OCInitTypeDef TIM_OCInitStructure;6 k- J/ ~0 L1 R+ b; ^5 n, s
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);8 p1 F! y3 C* L. g( v& n
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB| RCC_APB2Periph_AFIO, ENABLE);
- Z4 c4 v8 r! U2 h ~3 _ - H" C8 |( w7 Q: V) i7 R! k' p
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //TIM2_CH3* N, g- F; y; m" x2 _
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出$ C5 B# t1 g5 K0 e3 y1 E+ p" h
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; V0 K+ g( [8 f5 W; O6 y
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO
3 L8 C" z; z$ G+ i) [ # d; N$ G0 b3 ~; G
; \! b3 L, ^* f i5 y0 o# l6 j
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM1,ENABLE);//TIM1部分重映射
) ?: ~0 J% t$ i$ L # x, O2 ?& ~, z6 R
TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 计数到5000为500ms( k* Q5 x; S' O' S- `
TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 10Khz的计数频率 . ]3 s# F0 |6 I% O8 O+ P( n( g
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim. v! e! R4 O/ S @
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
$ d/ B6 G9 Y( g% B+ F/ r TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
' x- l/ i$ a: g! z) z% G . S+ M% F7 R8 Z6 P5 W
( x5 y* s4 U* q' | TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;
' @$ i& ~3 A. a4 S7 E$ G0 { TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;+ i$ ]& b" E. g5 T/ s
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
! u3 d! |& A/ z c0 } TIM_OC2Init(TIM1,&TIM_OCInitStructure);5 T6 x* \1 J( N9 t7 M# A
6 V2 y1 Q. j; O# u" n: X
TIM_OC2PreloadConfig(TIM1,TIM_OCPreload_Enable);, |- r( A: _# L, ^" v
TIM_Cmd(TIM1,ENABLE);
3 E; m V g) s2 @5 N7 o
' J1 X4 U+ ?/ C. S& v1 }- {1 ^ t8 u! s& e2 ] j$ U: g3 v0 P
}3 g0 j* K; f4 D% |5 a# _9 d n
//主函数:
% {3 ]8 C' T* S( R9 j! iint main(void)# u7 n! M& ?; M& G) {
{$ @ L" h, X4 s; N$ _8 l7 i/ z
u16 led0pwmval=0;
; d, Z# E8 b- ^4 p1 b! g u8 dir=1;
, i P: y" Y3 I5 w. S2 J5 d delay_init(); Z% S3 `, Q! p! r/ H8 N
PWM_Init(899,0);+ ^8 i! l+ g5 G4 m( Q) L# Y
2 G% b# l( q: h% L4 ` U while(1) t7 p- P5 K: Q/ i9 V
{ _- A5 J0 \( X4 s
delay_ms(10);
/ N% {4 n) h3 q7 q& E if(dir)led0pwmval++;& y0 g/ b4 x0 |% S) X& m
else led0pwmval--;; C* Z s2 x- W- u
/ d+ m+ j$ }1 q9 J5 ]. R3 ^
if(led0pwmval>300)dir=0;
$ f7 S' `, M }' R/ y" ^0 | if(led0pwmval==0)dir=1; & i Y/ B5 i$ y: f
TIM_SetCompare2(TIM1,led0pwmval); * Y+ F* h( j7 u, T' t$ ]0 L
}
0 v8 M. C# V2 U ~" P0 | U5 k2 N 9 U R0 Y. ?. y/ {6 l
# H& N% x5 y# q o: K5 @. V% z. a7 t- ^( a
}& O1 p. Q# D ^' ~, d2 ?3 s' @2 j
; i/ m+ \7 \- @3 W7 O2 _: h
|
|