91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 3KB
    文件類型: .zip
    金幣: 2
    下載: 4 次
    發布日期: 2021-06-23
  • 語言: 其他
  • 標簽: PWM??相位差??STM32??

資源簡介

自己在別人的基礎上修改的(之前不能修改占空比),既能夠修改相位差也能修改占空比,看完之后你能理解這個思想就可以隨便修改了

資源截圖

代碼片段和文件信息

#include?“tim.h“
#include?“stm32f10x.h“

/*
1、同一個定時器的不同通道之間實現PWM輸出不同的占空比和相位
可以利用修改PWM的輸出模式為TIM_OCMode_Toggle,可以實現;
1)當比較寄存器的值一直不變化時,輸出的占空比是50%,不變化;改變兩個通道之間的相位的話,可以通過改變通道的輸出極性和[一個通道比較值為0,另一個比較值設定既可實現]
2)當想要改變PWM的相位和占空比時,需要在該定時器的更新中斷中,修改比較寄存器的值(設定兩個比較值既可,在更新中斷中輪訓改變寄存器值)
3)在程序運行時,改變占空比的同時,也會改變相位。同時在改變的PWM第一拍,占空比的值是不對的。
*/


u16?Test_CH1Test_CH1_1Test_CH2?Test_CH2_1?Period1;
void?TIM3_Config(uint16_t?preuint16_t?arr)
{
???TIM_TimebaseInitTypeDef??TIM_TimebaseInitStructure;
?NVIC_InitTypeDef????????NVIC_InitHALLStructure;

???RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3ENABLE);
???//這個函數就在一開始的時候使用切記
???TIM_DeInit(TIM3);
???//TIM
???TIM_TimebaseInitStructure.TIM_Prescaler?=?pre;
???TIM_TimebaseInitStructure.TIM_CounterMode?=?TIM_CounterMode_Up;
???TIM_TimebaseInitStructure.TIM_Period ?=?arr;
???TIM_TimebaseInitStructure.TIM_ClockDivision?=?0;
???TIM_TimebaseInitStructure.TIM_RepetitionCounter?=?0;
???TIM_TimebaseInit(TIM3&TIM_TimebaseInitStructure);
?
?TIM_UpdateRequestConfig(TIM3?TIM_UpdateSource_Regular);
?
?NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
?NVIC_InitHALLStructure.NVIC_IRQChannel?=?TIM3_IRQn;
?NVIC_InitHALLStructure.NVIC_IRQChannelPreemptionPriority?=??1;//2
?????????????????????????????????????????????????????
????NVIC_InitHALLStructure.NVIC_IRQChannelSubPriority?=?1;//0
????NVIC_InitHALLStructure.NVIC_IRQChannelCmd?=?ENABLE;
????
????NVIC_Init(&NVIC_InitHALLStructure);
??TIM_ITConfig(TIM3?TIM_IT_Update?ENABLE);

???//open?periph
???TIM_Cmd(TIM3ENABLE);
???
}
//TIM3?CH1?PA6??CH2?PA7
void?PWM_Config(uint16_t?pulseuint16_t?degFunctionalState?status)
{
TIM_OCInitTypeDef??TIM_OCInitStructure;
GPIO_InitTypeDef??GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA?|?RCC_APB2Periph_AFIOENABLE);

//GPIO

???GPIO_InitStructure.GPIO_Pin?=?GPIO_Pin_6?|?GPIO_Pin_7;
?GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_AF_PP;
?GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;
?GPIO_Init(GPIOA&GPIO_InitStructure);

//TIM?OC
TIM_OC1PreloadConfig(TIM3TIM_OCPreload_Enable);
TIM_OCInitStructure.TIM_OCMode?=?TIM_OCMode_Toggle;//TIM_OCMode_PWM1??TIM_OCMode_Toggle
if(status)
{
???TIM_OCInitStructure.TIM_OutputState =?TIM_OutputState_Enable;
}
else
{
???TIM_OCInitStructure.TIM_OutputState =?TIM_OutputState_Disable;
}
TIM_OCInitStructure.TIM_Pulse?=?TIMX_CH1_CCRx_First;//CH1---PA6
TIM_OCInitStructure.TIM_OCPolarity =?TIM_OCPolarity_High;
TIM_OC1Init(TIM3&TIM_OCInitStructure);

TIM_OC1PreloadConfig(TIM3TIM_OCPreload_Enable);
TIM_OCInitStructure.TIM_OCMode?=?TIM_OCMode_Toggle;
if(status)
{
???TIM_OCInitStructure.TIM_OutputState =?TIM_OutputState_Enable;
}
else
{
???TIM_OCInitStructure.TIM_OutputState =?TIM_OutputState_Disable;
}
TIM_OCInitStructure.TIM_Pulse?=?TIMX_CH2_CCRx_First;
????//當小于等于180度的時候使用相反的極性
if(deg<=180)
{
???TIM_OCInitStructure.TIM_OCPolarity =?TIM_OCPolarity_Low;
}
//當大于的時候使用相同的極性

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-10-28?11:25??STM32?同一個定時輸出不同的相位差和占空比\
?????文件????????5626??2017-10-28?11:25??STM32?同一個定時輸出不同的相位差和占空比\time.c
?????文件?????????461??2017-10-28?11:25??STM32?同一個定時輸出不同的相位差和占空比\time.h

評論

共有 條評論