1.1-GPIO操作
#define GPIO_Pin_3 ((uint16_t)0x0008) #define GPIO_Pin_4 ((uint16_t)0x0010)
这里要使用3,4脚,找到路径,在#define GPIO_Pin_1 ((uint16_t)0x0002) #define GPIO_Pin_2 ((uint16_t)0x0004) 下面添加3,4为1时就是0008和0010
1.1.2
#define GPIO_Pin_7 ((uint16_t)0x0080) #define GPIO_Pin_13 ((uint16_t)0x2000) 同上第7,13位为1
1.1.3
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 实现GPIO在推挽模式和输出最大速度为50MHz
1.1.4
STM_EVAL_LEDOn(LED1); Delay(0xAFFFF);
STM_EVAL_LEDOn(LED2);
Delay(0xAFFFF);
STM_EVAL_LEDOn(LED3); Delay(0xAFFFF); STM_EVAL_LEDOn(LED4); Delay(0xAFFFF);
函数STM_EVAL_LEDOn(LED):实现LED点亮
1.1.5
STM_EVAL_LEDOn(LED1); Delay(0xAFFFF);
STM_EVAL_LEDOn(LED2); Delay(0xAFFFF);
STM_EVAL_LEDOn(LED3); Delay(0xAFFFF);
STM_EVAL_LEDOn(LED4);
Delay(0xAFFFF);
/* Turn off */
STM_EVAL_LEDOff(LED1); Delay(0xAFFFF);
STM_EVAL_LEDOff(LED2); Delay(0xAFFFF);
STM_EVAL_LEDOff(LED3); Delay(0xAFFFF);
STM_EVAL_LEDOff(LED4); Delay(0xAFFFF); 函数STM_EVAL_LEDOn(LED):实现LED点亮 函数STM_EVAL_LEDOff(LED):实现LED关闭
1.1.6
STM_EVAL_LEDOff(LED3); Delay(0xAFFFF);
STM_EVAL_LEDOff(LED4);
函数STM_EVAL_LEDOff(LED):实现LED关闭为了看清加个延时
1.1.7
STM_EVAL_LEDOff(LED2); STM_EVAL_LEDOff(LED4);
函数STM_EVAL_LEDOff(LED):实现LED关闭
1.1.8
STM_EVAL_LEDOn(LED3); Delay(0xAFFFF); STM_EVAL_LEDOff(LED3); Delay(0xAFFFF); STM_EVAL_LEDOn(LED4);
STM_EVAL_LEDOff(LED4); 按要求点亮
1.1.9
STM_EVAL_LEDOn(LED1);; Delay(0xAFFFF); STM_EVAL_LEDOff(LED1); STM_EVAL_LEDOn(LED3); Delay(0xAFFFF); STM_EVAL_LEDOff(LED3);
按要求点亮
1.1.10
Delay(0xFFFFFF);
STM_EVAL_LEDOn(LED1); Delay(0xFFFFFF); STM_EVAL_LEDOff(LED1); STM_EVAL_LEDOn(LED3);
STM_EVAL_LEDOff(LED3); 按要求点亮
1.2-中断控制器使用方法
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
直接copy下面的TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
1.2.2
NVIC_InitStructure.NVIC_IRQChannel = 28; //考试要求正确修改 Word中tim2是通道28,编译有下面NVIC_IRQChannelPreemptionPriority转到宏定
义有个uint8_t NVIC_IRQChannel;
1.2.3
NVIC_InitStructure.NVIC_IRQChannel = 29;
Word中tim3是通道29,编译有下面NVIC_IRQChannelPreemptionPriority转到宏定义有个uint8_t NVIC_IRQChannel;
1.2.4
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
Word中NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority:优先级配置
1.2.5
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
Word中TIM2拥有抢占优先级0,响应优先级0;TIM3拥有抢占优先级1,响应优先级1;TIM4拥有抢占优先级2,响应优先级0。
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
1.2.6
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2; NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
Word里面有两大窜,使其拥有抢占优先级2,响应优先级0
1.2.7
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
1.2.8
/* Enable the USARTy_DMA1_IRQn Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = 16;
编译进入上面注解USARTy_DMA1_IRQn可以看到使用16通道,前半部分下面有
1.2.9
/* Toggle LED3 */
STM_EVAL_LEDToggle(LED3);
Word有个函数STM_EVAL_LEDToggle(LEDx):LEDx状态翻转上面注解有led3
1.2.10
/* Toggle LED32*/
STM_EVAL_LEDToggle(LED2);
Word有个函数STM_EVAL_LEDToggle(LEDx):LEDx状态翻转上面注解有led2
1.3-PWM脉冲宽度调制
printf(\ 36KHz\\n\
word中已知TIMX3CLK=36MHz,分频系数Prescaler=0,
? TIM3的时钟频率: TIM3 counter clock=TIM3CLK/(Prescaler + 1)。
? TIM3的频率: Frequence=TIM3 counter clock/(TIM3_ARR+1)程序中tim3_arrshi
999,所以最后36khz
1.3.2
printf(\ 18KHz\\n\
word中已知TIMX3CLK=36MHz,分频系数Prescaler=1,