有一种伟大的第一步的感觉。
文章更多是为了自己写的,希望有所突破。对高手来说实在幼稚。见谅。
好了,废话不多说。
直接贴代码。
(大部分注释由STM32F10xxx中文文档第二版获得)
首先是一些必要的声明
#include <stm32f10x.h>
#include "pwm.h"
u32 Sys_Clk=1000000;
u16 pwm1_2_Freqz;//pwm波1,2输出口的频率
u16 pwm3_4_Freqz;//pwm波3,4输出口的频率
u16 TIM2_PERIOD;//定时器跳转周期数
u16 TIM4_PERIOD;
u16 CCR_VAL1 ;//定时器的比较寄存器的取值,当实际值大于此值时,电平取反
u16 CCR_VAL2 ;
u16 CCR_VAL3 ;
u16 CCR_VAL4 ;
下面是正文……注释全是手打啊(≧▽≦)/
void PWM_GPIO_Config(void) //用来配置外设功能的函数,总是以字符串"Config"结尾
{
GPIO_InitTypeDef GPIO_InitStructure;//PPP_InitTypeDef:初始化名为PPP的外设,这里是初始化GPIO
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);//开启时钟,状态:ENABLE即使能。Periph中文为外围设备。初始化GPIO之AB口,复用推挽输出
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//开启TIM2时钟 关于APB1和APB2的分类见图1图2
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3;//初始化引脚2,3
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//模式从枚举类型选其一
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;