问答

汇集网友智慧,解决技术难题

21ic问答首页 - TAG - PWM
  • CW32 的高级时钟如何同时独立控制6路的占空比 sos

    刚接触这个芯片,这一个问题搞了两天的,真的不友好,连个寄存器手册也没!!!!CW32 的高级时钟如何同时控制6路pwm,并且能够独立控制6路的占空比?

    寄存器 PWM 占空比 CW32 时钟 控制

    516浏览量 0回复量 关注量
  • 辉芒FT60E121-SOP8 中断问题 sos

    PA5触发中断时理应只有[color=#80080]BLUE_PIN ([/color][color=#80080]PA0) [/color]输出高电平,但实际情况也[color=#800080]YELLOW_PIN (PA2)[/color]有输出,有没有大佬懂,帮帮小弟 #include "SYSCFG.h" [color=#800080]//***********************宏定义****************************[/color] #define unchar unsigned char unchar FCount; unchar ReadAPin; [color=#800080]#define BLUE_PIN PA0 [/color] #define WHITE_PIN PA1[color=#800080] [/color] [color=#800080]#define YELLOW_PIN PA2[/color][color=#800080] [/color] //定义输出引脚 [color=#800080]#define turn_signal PA5 [/color] #define width_signal PA4 volatile unsigned char is_running = 0; volatile float pwm_counter = 0; #define PWM_PERIOD 10 // PWM周期,根据定时器频率调整 volatile float pwm_blue_duty = 0;//占空比 volatile float pwm_white_duty = 0;//占空比 volatile unsigned int cycle_count=0; volatile unsigned int step=10; int step1=0; [color=#808080]/*-------------------------------------------------[/color] [color=#808080]* 函数名:interrupt ISR[/color] [color=#808080]* 功能: 中断处理[/color] [color=#808080]* 输入: 无[/color] [color=#808080]* 输出: 无[/color] [color=#808080] --------------------------------------------------*/[/color] void interrupt ISR(void) { [color=#800080] if (PA5) { [/color] [color=#800080] YELLOW_PIN = 1; [/color] [color=#800080] BLUE_PIN = 0; [/color] [color=#800080] WHITE_PIN = 0;[/color] [color=#800080] }[/color] if (T0IE && T0IF) {T0IF = 0;} if(TMR2IE && TMR2IF) { TMR2IF = 0; if (pwm_counter >= PWM_PERIOD) pwm_counter = 0; else{pwm_counter+=0.1;} if (pwm_blue_duty>PWM_PERIOD){pwm_blue_duty=0;} } } [color=#808080]/*-------------------------------------------------[/color] [color=#808080]* 函数名:POWER_INITIAL[/color] [color=#808080]* 功能: 上电系统初始化[/color] [color=#808080]* 输入: 无[/color] [color=#808080]* 输出: 无[/color] [color=#808080] --------------------------------------------------*/ [/color] void POWER_INITIAL (void) { OSCCON = 0B01110001; //IRCF=111=16MHz/2=8MHz,0.125us INTCON = 0; //暂禁止所有中断 PORTA = 0B00000000; TRISA = 0B00110000; //PA输入输出 0-输出 1-输入 //PA4-OUT PORTC = 0B00000000; TRISC = 0B00000000; //PC输入输出 0-输出 1-输入 WPUA = 0B00110000; //PA端口上拉控制 1-开上拉 0-关上拉 //开PA6上拉 OPTION = 0B00000000; //Bit3=0 TMR0 MODE,PS=000=TMR0 Rate 1:2 PSRCA = 0B11111111; //源电流设置最大 PSRCC = 0B11111111; PSINKA = 0B11111111; //灌电流设置最大 PSINKC = 0B11111111; MSCON = 0B00110000; //Bit5: PSRCAH4和PSRCA[4]共同决定源电流。00:4mA; 11: 33mA; 01、10:8mA //Bit4: PSRCAH3和PSRCA[3]共同决定源电流。00:4mA; 11: 33mA; 01、10:8mA //Bit3: UCFG1<1:0>为01时此位有意义。0:禁止LVR;1:打开LVR //Bit2: 快时钟测量慢周期的平均模式。0:关闭平均模式;1:打开平均模式 //Bit1: 0:关闭快时钟测量慢周期;1:打开快时钟测量慢周期 //Bit0: 当T2时钟不是选择指令时钟的时候 // 0:睡眠时停止工作:1: 睡眠时保持工作。 } [color=#808080]/*----------------------------------------------------[/color] [color=#808080]* 函数名称:TIMER0_INITIAL[/color] [color=#808080]* 功能:初始化设置定时器[/color] [color=#808080]* 相关寄存器:T0CS T0SE PSA [/color] [color=#808080]* 设置TMR0定时时长=(1/系统时钟频率)*指令周期*预分频值*255[/color] [color=#808080]* =(1/16000000)*2*256*255=8.192ms[/color] [color=#808080] ----------------------------------------------------*/[/color] void TIMER0_INITIAL (void) { OPTION = 0B00000000; //Bit5 T0CS Timer0时钟源选择 // 1-外部引脚电平变化T0CKI 0-内部时钟(FOSC/2) //Bit4 T0CKI引脚触发方式 1-下降沿 0-上升沿 //Bit3 PSA 预分频器分配位 0-Timer0 1-WDT //Bit[2:0] PS 8个预分频比 111 - 1:256 T0IF = 0; //清空T0软件中断 } void TIMER2_INITIAL (void) { T2CON0 = 0B00000001; //T2预分频1:4,后分频1:1 //Bit[6:3]: 定时器2输出后分频比 0000-1:1 //Bit2: 定时器2输出是能位 0-关闭 1-使能 //Bit[1:0]: 定时器2预分频比 01-1:4 T2CON1 = 0B00000000; //T2时钟来自系统时钟,PWM1连续模式 //Bit4: PWM单脉冲模式选择 0-连续 1-单脉冲 //Bit3: PWM蜂鸣器模式选择 0-PWM模式 1:蜂鸣器模式 //Bit[2:0]:Timer2时钟源选择 000-指令时钟 TMR2H = 0; //TMR2赋值 TMR2L = 0; PR2H = 0; //PR赋值 PR2L = 200; TMR2IF = 0; //清TMER2中断标志 TMR2IE = 1; //使能TMER2的中断(配置成timer定时器时不注释) TMR2ON = 1; //使能TMER2启动 PEIE = 1; //使能外设中断 GIE = 1; //使能全局中断 } [color=#800080]void B_UP (void){[/color] [color=#800080] switch(step1)[/color] [color=#800080] { case 0:{pwm_blue_duty+=0.001;step1=1;}[/color] [color=#800080] break;[/color] [color=#800080] case 1:{if (pwm_counter < pwm_blue_duty) BLUE_PIN = 1; [/color] [color=#800080] else BLUE_PIN = 0; step1=0;}[/color] [color=#800080] break;[/color] [color=#800080] pwm_counter=0;[/color] [color=#800080] }[/color] [color=#800080]}[/color] [color=#808080]/*-------------------------------------------------[/color] [color=#808080]* 函数名: main [/color] [color=#808080]* 功能: 主函数[/color] [color=#808080]* 输入: 无[/color] [color=#808080]* 输出: 无[/color] [color=#808080] --------------------------------------------------*/[/color] void main(void) { POWER_INITIAL(); //系统初始化 TIMER0_INITIAL(); TIMER2_INITIAL(); GIE = 1; //开中断 T0IE = 1; //开定时器/计数器0中断 TMR2IE = 1; while(1) { [color=#800080] B_UP ();[/color] } }

    PWM 11 TI FT 辉芒 单片机

    751浏览量 0回复量 关注量
  • 请教一下STC12H1K输出PWM的问题 sos

    [i=s] 本帖最后由 chenczyaa 于 2024-7-3 08:49 编辑 [/i] 代码如下,我的P3.5脚 没PWM输出的,好奇怪。void pwm_init() { CCON = 0x00; // CL = 0; //PCA计数器 低8位 CH = 0; //PCA计数器 高8位 CMOD = 0x00; //选择时钟源为系统时钟源的1/12 CCAPM0 = 0x42; //0100 0010 允许比较器,允许PWM0引脚输出 //PCA_PWM0=0x00; //8位PWM PCA_PWM0=0x40; //7位PWM CCAP0H = CCAP0L = 0x00; //设置占空比为 0 PWMA_PS = 0xff; PWMB_PS = 0xf3;//P3.5输出PWM CR = 1; //启动 PCA 计数器阵列 } main() { uchar key1up=0,key2up=0,gear1=0,gear2=0; /* TMOD =0x00; //0模式16位自动重装载 TL0=0x66; //1ms初值 TH0=0xfc; TR0=1;// 启动定时器0 ET0=1;// 开启定时器0中断 EA=1;// 开启整个中断系统 */ P1M0=0x00;//设置P1为准双向口 P1M1=0x00; P3M0=0x00;//设置P3为准双向口 P3M1=0x00; //P1=0xff; //P35=0; pwm_init(); //PCA_PWM0=0x02;CCAP0H= CCAP0L=0xFF; //固定输出低 //PCA_PWM0=0x00;CCAP0H= CCAP0L=0x00; //固定输出高 //CCAP0L=0x20;//PWM占空比(100H-20H)/100H(87.5%)//8位PWM //CCAP0H=0x20; CR = 0; //CCAP0L=0xCC;//PWM占空比(100H-CCH)/100H(20%)//8位PWM //CCAP0H=0xCC; CCAP0L=0x20;//PWM占空比(80H-20H)/80H(75%)//7位PWM CCAP0H=0x20; CR = 1; P34=0; while(1) { delay(4000); P34 = ~P34; } }

    占空比 pc ap 输出 PWM stc12

    578浏览量 0回复量 关注量
  • 关于HCF32460的PWM问题

    请教一下各位,关于小华MCU,timerA的PWM输出,使用IO口为PC15,配置功能如下:但是目前从示博器来看输出波形一直保持不变,但是从打印来看,定时器是已经启动开始计数了。 void timer_init(uint16_t CompareValue) { /* MCU Peripheral registers write unprotected. */ LL_PERIPH_WE(LL_PERIPH_GPIO | LL_PERIPH_FCG | LL_PERIPH_PWC_CLK_RMU); stc_tmra_init_t stcTmraInit; stc_tmra_pwm_init_t stcPwmInit; /************************gpio config***************************/ stc_gpio_init_t stcGpioInit; (void)GPIO_StructInit(&stcGpioInit); stcGpioInit.u16PinDir = PIN_DIR_OUT; stcGpioInit.u16PinOutputType = PIN_OUT_TYPE_CMOS; //CMOS正常输出 (void)GPIO_Init(ENCODER_OUT_PORT, ENCODER_OUT_PIN, &stcGpioInit); /* 1. Enable TimerA peripheral clock. */ FCG_Fcg2PeriphClockCmd(FCG2_PERIPH_TMRA_4, ENABLE); /* 2. Set a default initialization value for stcTmraInit. */ (void)TMRA_StructInit(&stcTmraInit); /* 3. Modifies the initialization values depends on the application. */ stcTmraInit.sw_count.u16CountMode = TMRA_MD_SAWTOOTH; //锯齿波计数模式 stcTmraInit.sw_count.u16CountDir = TMRA_DIR_UP; //向上计数 stcTmraInit.u32PeriodValue = 10000U-1U; //自动重装载值 (void)TMRA_Init(CM_TMRA_4, &stcTmraInit); /* 4. Set the comparison reference value. */ (void)TMRA_PWM_StructInit(&stcPwmInit); stcPwmInit.u32CompareValue = 5000U-1; //20/40 50%占空比 GPIO_SetFunc(ENCODER_OUT_PORT, ENCODER_OUT_PIN, GPIO_FUNC_4); (void)TMRA_PWM_Init(CM_TMRA_4, TMRA_CH6, &stcPwmInit); TMRA_PWM_OutputCmd(CM_TMRA_4, TMRA_CH6, ENABLE); /*(void)TMRA_PWM_StructInit(&stcPwmInit); stcPwmInit.u32CompareValue = 20U-1; //20/40 50%占空比 GPIO_SetFunc(ENCODER_IN_PORT, ENCODER_IN_PIN, GPIO_FUNC_4); (void)TMRA_PWM_Init(CM_TMRA_4, TMRA_CH5, &stcPwmInit); TMRA_PWM_OutputCmd(CM_TMRA_4, TMRA_CH5, ENABLE);*/ /* MCU Peripheral registers write protected. */ LL_PERIPH_WP(LL_PERIPH_GPIO | LL_PERIPH_FCG | LL_PERIPH_PWC_CLK_RMU); /* Starts TimerA. */ TMRA_Start(CM_TMRA_4); }

    2460 PWM HC timerA PWM输出 hc32f460

    1417浏览量 2回复量 关注量
  • STM32F407 同一个定时器的两个通道产生的PWM脉冲不对

    STM32F407VE ,使用定时器1同时产生两路PWM波 两路PWM产生的脉冲数不一样时,实际产生的脉冲不对,会少1个 实际上是不能使用这种方式做吗?

    定时器 stm32f407 PWM STM32 MCU

    2718浏览量 14回复量 关注量
  • MM32F014 144MHZ PWM sos

    请问MM32F014 可以实现144MHZ的PWM输出吗?听有些工程师说可以实现,但是看主频最高才72MHZ。

    工程师 PWM输出 PWM MM32 hz MUC

    1442浏览量 0回复量 关注量
  • MM32G0001A 2个Timer各出1PWM 设置占空比不同 实际结果确一样

    MM32G0001A 使用两个定时器 TIM14和TIM3 各出一路PWM 设置不一样的占空比 但是实际结果确一样 哪里设置有问题吗? void TIM3_Configure(void) { GPIO_InitTypeDef GPIO_InitStruct; TIM_OCInitTypeDef TIM_OCInitStruct; TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct; /* Compute the value to be set in ARR regiter to generate signal frequency at 100 Khz */ uint32_t TimerPeriod = (TIM_GetTIMxClock(TIM3) / 5000 ) - 1; /* Compute CCR1 value to generate a duty cycle at 80% for channel 1 */ uint32_t Channel1Pulse = ((uint32_t)800 * (TimerPeriod - 1)) / 1000; RCC_APB1PeriphClockCmd(RCC_APB1ENR_TIM3, ENABLE); TIM_TimeBaseStructInit(&TIM_TimeBaseStruct); TIM_TimeBaseStruct.TIM_Prescaler = 0; TIM_TimeBaseStruct.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseStruct.TIM_Period = TimerPeriod; TIM_TimeBaseStruct.TIM_ClockDivision = TIM_CKD_Div1; TIM_TimeBaseStruct.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStruct); TIM_OCStructInit(&TIM_OCInitStruct); TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStruct.TIM_Pulse = 0; TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OCInitStruct.TIM_OCIdleState = TIM_OCIdleState_Set; TIM_OCInitStruct.TIM_Pulse = Channel1Pulse; TIM_OC1Init(TIM3, &TIM_OCInitStruct); RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE); GPIO_PinAFConfig(GPIOA, GPIO_PinSource11, GPIO_AF_3); /* TIM1_CH1 */ GPIO_StructInit(&GPIO_InitStruct); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStruct); TIM_Cmd(TIM3, ENABLE); TIM_CtrlPWMOutputs(TIM3, ENABLE); } /*********************************************************************************************************************** * @brief * [url=home.php?mod=space&uid=536309]@NOTE[/url] none * @param none * @retval none *********************************************************************************************************************/ void TIM14_Configure(void) { GPIO_InitTypeDef GPIO_InitStruct; TIM_OCInitTypeDef TIM_OCInitStruct; TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct; /* Compute the value to be set in ARR regiter to generate signal frequency at 100 Khz */ uint32_t TimerPeriod = (TIM_GetTIMxClock(TIM14) / 5000 ) - 1; /* Compute CCR1 value to generate a duty cycle at 80% for channel 1 */ uint32_t Channel1Pulse = ((uint32_t)500 * (TimerPeriod - 1)) / 1000; RCC_APB1PeriphClockCmd(RCC_APB1ENR_TIM14, ENABLE); TIM_TimeBaseStructInit(&TIM_TimeBaseStruct); TIM_TimeBaseStruct.TIM_Prescaler = 0; TIM_TimeBaseStruct.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseStruct.TIM_Period = TimerPeriod; TIM_TimeBaseStruct.TIM_ClockDivision = TIM_CKD_Div1; TIM_TimeBaseStruct.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM14, &TIM_TimeBaseStruct); TIM_OCStructInit(&TIM_OCInitStruct); TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStruct.TIM_Pulse = 0; TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OCInitStruct.TIM_OCIdleState = TIM_OCIdleState_Set; TIM_OCInitStruct.TIM_Pulse = Channel1Pulse; TIM_OC1Init(TIM14, &TIM_OCInitStruct); RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE); GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_3); /* TIM1_CH1 */ GPIO_StructInit(&GPIO_InitStruct); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_High; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStruct); TIM_Cmd(TIM14, ENABLE); TIM_CtrlPWMOutputs(TIM14, ENABLE); }

    ST 1A MM32G0001 占空比 PWM timer

    774浏览量 1回复量 关注量
  • HC32F4A0,timer4_1输出U,V,W互补pwm信号的软件demo,有参考的吗? sos

    HC32F4A0,timer4_1输出U,V,W互补pwm信号的软件demo,有参考的吗?

    软件 信号 timer PWM demo HC32F4A0

    1637浏览量 0回复量 关注量
  • 全桥逆变电路烧了两个mos管 赏100家园币

    [color=#333333][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px][font="][size=14px]关于全桥逆变电路烧mos管的问题想请教大佬,首先这是我的原理图,用STM32产生的PWM驱动。[/size][/font][/size][/font][/backcolor][/color] [img=740,462]https://bbs.21ic.com/data/attachment/forum/202403/08/102609kth1w2q7zmhv72dd.jpg.thumb.jpg[/img] [color=#444444][backcolor=rgb(242, 249, 253)][/backcolor][/color][img=740,358]https://bbs.21ic.com/data/attachment/forum/202403/08/102617kqf36q7157uz67qu.jpg.thumb.jpg[/img][color=#444444][backcolor=rgb(242, 249, 253)][/backcolor][/color] [color=#333333][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px][font="][size=14px]逆变电路在给定12伏的直流电时,输出一般,但是好歹是正常的。[/size][/font][/size][/font][/backcolor][/color][color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px] [/size][/font][/backcolor][/color][img=740,416]https://bbs.21ic.com/data/attachment/forum/202403/08/102458s840xlz8l0hlx4rn.jpg.thumb.jpg[/img][color=#444444][backcolor=rgb(242, 249, 253)][/backcolor][/color][font=Helvetica Neue, Helvetica, Arial, PingFang SC, Hiragino Sans GB, WenQuanYi Micro Hei, Microsoft Yahei, sans-serif][color=rgb(68, 68, 68)][backcolor=rgb(242, 249, 253)][size=16px][color=#333333][size=14px] [/size][/color][/size][/backcolor][/color][/font][color=#333333][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px][font="][size=14px]但是一旦加到四五十伏,左边两个mos就烧坏了,右边两个反而没问题,从原理图上看,左边两个mos管分别是两路的高端和低端啊,请问这可能是什么原因造成的呢?难道是哪里的元件接反了(我检查了好几遍,确认过IRF840的手册,感觉没啥问题啊),还是说我pwm波死区设置的太小了?[/size][/font][/size][/font][/backcolor][/color] [img=740,416]https://bbs.21ic.com/data/attachment/forum/202403/08/102804qfvzngcsq5z5fzjt.jpg.thumb.jpg[/img] [color=#444444][backcolor=rgb(242, 249, 253)][/backcolor][/color][img=740,554]https://bbs.21ic.com/data/attachment/forum/202403/08/102809en1emhrrpjny2p22.jpg.thumb.jpg[/img]

    原理图 PWM MOS管 MOSFET 全桥逆变电路

    8220浏览量 4回复量 关注量
  • HC32F460 通过DMA控制PWM的脉宽

    [i=s] 本帖最后由 tyw 于 2024-2-26 15:25 编辑 [/i] 如何通过DMA来控制PWM的脉宽,目前使用的TIMERA的PWM3 [attach]2224450[/attach] [attach]2224520[/attach] [attach]2224518[/attach] [size=2][color=#ffffff][backcolor=purple] tyw 注[/backcolor][/color][/size]

    PWM DMA hc32f460

    1077浏览量 1回复量 关注量
  • HK32F030MF4P6 PC3-TIM1_CH3 PWM 没输出

    void TIM1_WindPwm_Config(void) //16K TIM1_CH3 { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_AHBPeriphClockCmd( RCC_AHBPeriph_GPIOC, ENABLE ); RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 , ENABLE); // 使能IOMUX时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_IOMUX,ENABLE); GPIO_IOMUX_PinAFConfig(GPIOC,GPIO_PinSource3,IOMUX_PC3_TIM1CH3); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//GPIO_PuPd_DOWN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOC,GPIO_PinSource3,GPIO_AF_3); /* Time Base configuration */ TIM_TimeBaseStructure.TIM_Prescaler = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseStructure.TIM_Period = TIM1_PERIOD-1; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); /* Channel 1, 2,3 and 4 Configuration in PWM mode */ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;//TIM_OutputNState_Enable; TIM_OCInitStructure.TIM_Pulse = 1000; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low; TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set; //TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset; TIM_OC3Init(TIM1, &TIM_OCInitStructure); /* TIM1 counter enable */ TIM_Cmd(TIM1, ENABLE); /* TIM1 Main Output Enable */ TIM_CtrlPWMOutputs(TIM1, ENABLE); }

    pc TI PWM IO pi ST

    2037浏览量 2回复量 关注量
  • FPGA程序,不能正确输出,各位帮忙看下

    我编写了两个文件,配置了输出口,,LASER_PWM 始终输出不了波形,请问下,这个是什么原因呀?modesiem仿真是有波形输出的//////////////-------PWM.V 文件 `timescale 1 ns / 1 ps module pwm( input rsn, input clk, input [15:0]pwm_counter, input [15:0]pwm_duty, output pwm_out ); //reg[15:0]pwm_counter; //reg [15:0]pwm_duty; reg [15:0]counter=16'd0; reg pwm_out_r; always@(posedge clk or negedge rsn) //begin if(!rsn) begin counter <= 16'd0; end else begin if(counter >= pwm_counter)counter <= 16'd0; else counter <= counter + 1'd1; end // end always@(posedge clk or negedge rsn) if(!rsn) begin pwm_out_r <= 1'd0; end else if(counter>=pwm_duty) pwm_out_r<=1'b0; else pwm_out_r<=1'b1; //wire pwm_out; assign pwm_out = pwm_out_r;//((counter > pwm_duty) ? 1'd0 : 1'd1); endmodule ////// top_indepen.v 文件 //-------------------------Timescale----------------------------// `timescale 1 ns / 1 ps //--------------------FSMC_SIG---------------------// module FSMC_INDEP( FPGA_CLK, //鏉堟挸鍙嗛弶鑳祰閺呰埖灏烥PGA_CLK,25M FPGA_LEDR, FPGA_LEDG, FPGA_LEDB, WR, //FSMC閸愭瑤淇婇崣 RD, //FSMC鐠囪淇婇崣 CS0, //FSMC閻楀洭鈧 A, //FSMC閸︽澘**冮幀鑽ゅ殠 DB, //FSMC閺佺増宓侀幀鑽ゅ殠 NADV, //FSMC閻ㄥ嚞ADV //LASER PWM LASER_PWM, //interpn_exti Interp_ex, testclk, testclk_100, testclk_50, FPGA_KEY ); input FPGA_KEY; input FPGA_CLK,NADV; input WR,RD,CS0; inout [15:0]DB; input [24:16]A; output FPGA_LEDB,FPGA_LEDG,FPGA_LEDR; assign FPGA_LEDR = 1'd1; assign FPGA_LEDG = 1'd0; assign FPGA_LEDB = 1'd1; output LASER_PWM; output Interp_ex,testclk,testclk_100,testclk_50; //-------------------------MY_PLL-------------------------------// wire PLL_100M; wire PLL_8M; wire PLL_50M; wire PLL_12_5M; reg LaserCtrl1; reg [15:0] dbPower1;//閸旂喓宸 閸楃姷鈹栧В reg [15:0]dbQFreq1;//妫版垹宸 reg [15:0]counter; initial begin dbQFreq1 <= 16'd106; dbPower1 <= 16'd53; LaserCtrl1 <= 1'd1; end MY_PLL U1( .inclk0(FPGA_CLK), .c0(PLL_100M), .c1(PLL_50M), .c2(PLL_8M), .c3(PLL_12_5M) );// //------------------------RST_Ctrl-----------------------------// wire RST_n; RST_Ctrl U2( .FPGA_CLK(FPGA_CLK), .RST_n(RST_n) ); //娓氬瀵睷ST_Ctrl濡€虫健,鏉堟挸鍤崗銊ョ湰婢跺秳缍呮穱鈥冲娇RST_n pwm U5( .rsn(RST_n), .clk(PLL_8M), .pwm_counter(dbQFreq1), .pwm_duty(dbPower1),//閸旂喓宸 .pwm_out(LASER_PWM) ); endmodule

    FPGA PWM counter TE npu

    766浏览量 2回复量 关注量
  • HC32F030如何实现不用中断更新CCR调节互补PWM占空比?

    因为要使用互补PWM控制H桥来驱动电机,参考HC32F030驱动下的产生互补PWM的例子“HC32F030_DDL_Rev1.2.0\example\timer3\timer3_m23_tpcmp_pwm”,可以产生控制互补PWM占空比控制电机转动。但问题是这种方式需要在定时器溢出中断频繁更新CCR的值,频繁的中断服务程序频繁占用系统处理时间,而我只需要输出互补PWM而已。 尝试在参考例子中关掉中断,使能PWM自动输出。 //stcTim3BaseCfg.pfnTim3Cb = Tim3_LRMotorPWM_Int; //中断函数入口 //Tim3_ClearAllIntFlag(); //清中断标志 //Tim3_Mode23_EnableIrq(Tim3UevIrq); //使能TIM3 UEV更新中断 //EnableNvic(TIM3_IRQn, IrqLevel0, TRUE); //TIM3中断使能 Tim3_M23_EnPWM_Output(TRUE, TRUE); //端口输出使能 应用程序中改变CCR的值,试图改变PWM占空比: Init_LRMotor_PWM(); Tim3_M23_CCR_Set(Tim3CCR0A, 250); Tim3_M23_CCR_Set(Tim3CCR0B, 750); Tim3_M23_CCR_Set(Tim3CCR1A, 250); Tim3_M23_CCR_Set(Tim3CCR1B, 750); Tim3_M23_Run(); Delay_MS(2000); Tim3_M23_Stop(); Delay_MS(2000); Tim3_M23_CCR_Set(Tim3CCR0A, 750); Tim3_M23_CCR_Set(Tim3CCR0B, 250); Tim3_M23_CCR_Set(Tim3CCR1A, 750); Tim3_M23_CCR_Set(Tim3CCR1B, 250); Tim3_M23_Run(); 下载视频

    HC PWM TI se ev

    1311浏览量 2回复量 关注量
  • 为什么A会有half,B没有啊?

    为什么装载PWM的时候,会写成EPwm1Regs.CMPA.half.CMPA = int,和 EPwm4Regs.CMPB = int。为什么A会有half,B没有啊?

    PWM

    847浏览量 12回复量 关注量
  • 散热风扇,3.3v io接到fg和pwm吗

    请教这个风扇调速pwm管脚可以直接接到单片机3.3v IO口吗,fg反馈管脚上拉3k电阻后可以直接接到3.3v IO口吗

    PWM IO 管脚 vi 单片机

    889浏览量 2回复量 关注量
1234下一页