历史上的今天
今天是:2024年09月27日(星期五)
2021年09月27日 | stm32-PWM控制输出不同占空比
2021-09-27 来源:eefocus
main.c
#include #include /********************************************************************************************************* * 宏定义 *********************************************************************************************************/ extern void BSP_Init (void); void USART_OUT(USART_TypeDef* USARTx, uint8_t *Data,...); int fputc(int ch,FILE *f); char *itoa(int value, char *string, int radix); /********************************************************************************************************* * 名 称 :main * 功能描述 : 初始化STM32 * 输入参数 : none * 返回参数 : none. * 作 者 : * 修 改 :(日期、修改人名、修改原因) * 特殊说明 : (特殊功能说明,例如:有参数检查等) *********************************************************************************************************/ int main(void) { BSP_Init(); //不同通道设置不同占空比 TIM_SetCompare2(TIM3,3); TIM_SetCompare3(TIM3,50); while(1){} } bsp.c #include void RCC_Configuration(void); /* 初始化系统时钟 */ void TIM3_Configuration(void); /* PWM配置 */ void BSP_Init (void) { RCC_Configuration(); /* 初始化系统时钟 */ TIM3_Configuration(); /* PWM配置 */ } /********************************************************************************************************* * 名 称 :RCC_Configuration * 功能描述 : 初始化系统时钟 * 输入参数 : none * 返回参数 : none. * 作 者 : * 修 改 :(日期、修改人名、修改原因) * 特殊说明 : (特殊功能说明,例如:有参数检查等) *********************************************************************************************************/ void RCC_Configuration(void) { SystemInit(); /*APB1 36MHz 配置timer时会倍频为72mhz,具体有哪些在此时钟上可跳进去查看*/ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3 , ENABLE); /*APB2 72MHz 配置timer时会倍频为144mhz,具体有哪些在此时钟上可跳进去查看*/ RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE); } /********************************************************************************************************* * 名 称 :GPIO_Configuration * 功能描述 : 初始化IO口配置 * 输入参数 : none * 返回参数 : none. * 作 者 : * 修 改 :(日期、修改人名、修改原因) * 特殊说明 : (特殊功能说明,例如:有参数检查等) ******************* **************************************************************************************/ void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; /* LED灯的配置 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //通用推挽输出模式 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //输出模式最大速度50MHz GPIO_Init(GPIOA, &GPIO_InitStructure); } /********************************************************************************************************* * 名 称 :TIM3_Configuration * 功能描述 : 初始化定时器 PWM * 输入参数 : none * 返回参数 : none. * 作 者 : * 修 改 :(日期、修改人名、修改原因) * 特殊说明 : (特殊功能说明,例如:有参数检查等) *********************************************************************************************************/ void TIM3_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; TIM_OCInitTypeDef TIM_OCInitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; //通道3 PB0 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); //通道2 PA7 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Time base configuration */ TIM_TimeBaseStructure.TIM_Period = (100- 1); //arr 设置在下一个更新事件装入活动的自动重装载寄存器周期的值 TIM_TimeBaseStructure.TIM_Prescaler = (40-1); //分频 psc 影响周期 TIM_TimeBaseStructure.TIM_ClockDivision = 0; //时钟分割,一般写0 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //设置为向上计数模式 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); /* PWM1 Mode configuration: Channel1*/ TIM_OCInitStructure.TIM_Pulse =0; // 初始值 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //pwm模式1 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //使能通道 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //高电平 //通道3 TIM_OC3Init(TIM3, &TIM_OCInitStructure); TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能或者失能TIMx在CCR3上的预装载寄存器 //通道2 TIM_OC2Init(TIM3, &TIM_OCInitStructure); TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能或者失能TIMx在CCR3上的预装载寄存器 TIM_Cmd(TIM3, ENABLE); /* 使能 */ }
史海拾趣
|
引 言 ∑一△A/D转换技术以其高分辨率和大的动态范围在数据采集系统中得到了广泛应用:但∑一△A/D转换器通常采用串行传输,因此由它实现的采集系统大多包含串并转换单元。为了达到系统设计简化,降低系统成本的目的,探讨一种直 ...… 查看全部问答> |
|
使用PC104来实现,10。4寸tft显示,支持飞梭旋钮。 Aeon7500A麻醉机 -------------------------------------------------------------------------------- 1、 整机通过CE认证,安全性能达到国际先进水平 ,达到出口欧洲标准 2、 10.4”彩色 ...… 查看全部问答> |
|
在keilc51中 我定义了 #define bReData P3^2 uchar bdata receive; 我连续一个一个的接收8个bit 怎么变换成并保存到uchar中 能否写个函数 void BitToChar(bit i,uchar Addr,uchar *rec)//i或0或1 addr就是在uchar哪个 ...… 查看全部问答> |
|
请问在axd中烧录内核的时候出现: DBE Warning 0064:The image \'F:\\fic8120\\burnin_linux.axf\' was compiled w ith the FPU option 2(-fpu SoftFPA) that does not match the debugger mode $target_fpu=1(SoftVFP). 是什么问题呢?应该 ...… 查看全部问答> |
|
PCB抄板密技 第一步,拿到一块PCB,首先在纸上记录好所有元气件的型号,参数,以及位置,尤其是二极管,三机管的方向,IC缺口的方向。最好用数码相机拍两张元气件位置的照片。 第二步,拆掉所有器件,并且将PAD孔里的锡去掉。用酒精将PCB清洗干 ...… 查看全部问答> |
|
将从controlSUITE中的F2833x FIR 32-bit例子导入到CCS5.2中。在Debug模式下正常编译通过,但在Release模式下遇到了问题。编译报错: 在Console中描述问题的某一点是: \"D:/workspace_v5_2/F28335_FIR32_Example/lib/C28x_FixedPoint_Lib.lib\" ...… 查看全部问答> |




