|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
我用的单片机是:STM32F103C6T6A从网上买的核心板模块,LED灯拉到GPIOB>>>PB1口,下载程序后LED灯不亮,也不呼吸,是什么原因?
$ f- N3 ?. s$ @6 E& Zvoid PWM_Init(u16 arr,u16 psc). m1 G3 T3 [- r* ] p% D% P
{" Z) I) Y2 r3 h: F
GPIO_InitTypeDef GPIO_InitStructure;
* [6 ?. c1 u3 M, e9 t TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;$ R$ x, t% y% z- a2 j* G! g* K7 d
TIM_OCInitTypeDef TIM_OCInitStructure;( w( w7 B z8 E2 Q
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);0 ~! v, o1 t3 h/ K
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB| RCC_APB2Periph_AFIO, ENABLE);( k8 S- H! s8 K' e, i" {
! O) [7 B4 ~7 }; C GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //TIM2_CH3
" L' c V; v) }0 G" A9 U GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
8 D% G! n9 J: {. ? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;, @8 M' D. a5 v* z
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO7 ]- @" `9 f5 y/ J/ B2 R9 B3 i3 q
( s M* f6 T: q% Y+ P5 P
2 H; D: U2 D) n% c GPIO_PinRemapConfig(GPIO_PartialRemap_TIM1,ENABLE);//TIM1部分重映射
, Q! o6 t+ L. M/ J+ {5 W Q 9 o7 @: G2 w6 I! H7 F. X) P7 R
TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 计数到5000为500ms6 {+ t; z1 C3 \2 P! h; Q8 S
TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 10Khz的计数频率
2 ` E1 [" z2 ]2 P8 f TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim
6 Z ^! B- B' f& P) V TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
+ O+ x' s) X9 [0 C TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
9 L# a0 G" B$ P8 N3 S* x! l
2 N, ]/ \+ k' s. Q ( R/ b' |- E( O) z0 F
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;
5 @1 A# c- Q# e( \% s TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
2 H3 {9 E5 ^0 l, S TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;; s2 \. R' g% J6 k
TIM_OC2Init(TIM1,&TIM_OCInitStructure); u: }% |% L! H0 P6 p+ @0 F
( m4 a% l3 U5 N- `" D+ w8 b, s$ f
TIM_OC2PreloadConfig(TIM1,TIM_OCPreload_Enable);
1 Y3 o' J: M! Z0 |9 M0 w6 X+ J TIM_Cmd(TIM1,ENABLE);
$ @& F+ ~) k6 t X
. @& f5 X& @4 b6 M. J
) i% q0 F) I9 {/ O& {}2 Y, k% v9 d& E( U! _# @; d
//主函数:
7 e* g' ]. Z H" ?' qint main(void)
7 ]$ k3 ^# C: O# m1 z{, j7 D x) y& b" |. p
u16 led0pwmval=0;( k4 M; N* ^0 g9 @) O
u8 dir=1;
% ^6 m2 Y% U& M8 P/ X delay_init();# {: W5 e0 ~, x7 Q1 k0 c- A
PWM_Init(899,0);
- g) T2 ]5 U+ c i6 w
! X) Z% C* _( }- T, s4 Q1 C4 m while(1)
; k5 b! k. m) C. o7 e# a {
e* h" M9 ^; h7 S7 p delay_ms(10); 2 F5 V0 Z% T& p; u+ L
if(dir)led0pwmval++;# S* e+ N, {, I- I, L- Z; y
else led0pwmval--;
- }) P) z! \8 p6 d9 _
. s/ r8 e- D5 K* L6 G if(led0pwmval>300)dir=0;
* x c/ |# s7 t) g R if(led0pwmval==0)dir=1;
0 A9 @! L# c, L# |" _1 T0 S& v' l TIM_SetCompare2(TIM1,led0pwmval);
$ e f: Q4 m! Q) {$ [ H }
+ e9 s+ i" X+ B2 r5 F ]- L$ A \8 a! `2 |$ ^% k6 I
# s+ w8 y* O9 z- z, u& m8 s4 ^
$ l% Y+ m# W' ^
}7 a8 k$ y+ d% y" d' O |+ A. ?
+ K0 P1 t6 m* J, [$ X3 q
|
|