问答

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

21ic问答首页 - TAG - PWM输出
  • 为什么配置了tim0,LED灯都不闪了,也没有PWM输出。 sos

    int main(void) { Clock_Init(); SystemInit(); Gpio_Init(); UTimer_Init(); //SoftDelay(); while(1){ GPIO_SetBits(GPIO0,GPIO_Pin_3); SoftDelay(1000000); GPIO_ResetBits(GPIO0,GPIO_Pin_3); SoftDelay(1000000); } } void UTimer_Init(void){ TIM_TimerInitTypeDef TIM_InitStruct; TIM_TimerStrutInit(&TIM_InitStruct); SYS_WR_PROTECT = 0x7a83; // 关闭写保护 SYS_CLK_FEN = BIT4;//Timer0时钟使能 SYS_WR_PROTECT = 0; //开启写保护 TIM_InitStruct.Timer_EN = ENABLE; TIM_InitStruct.Timer_CH0_WorkMode = TIMER_OPMode_CMP;//输出比较模式 TIM_InitStruct.Timer_CH0Output = 0;/**< Timer 通道0在比较模式下的输出极性控制,当计数器 CNT

    pi timer ni led灯 PWM输出 TI

    533浏览量 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回复量 关注量
  • GD32F103T8U6配置PWM输出,无输出。

    #define M_G_U GPIOA #define M_G_V GPIOA #define M_G_W GPIOB #define M_G_P_U GPIO_PIN_6 #define M_G_P_V GPIO_PIN_7 #define M_G_P_W GPIO_PIN_0 #define M_G_UN GPIOA #define M_G_VN GPIOA #define M_G_WN GPIOA #define M_G_P_UN GPIO_PIN_3 #define M_G_P_VN GPIO_PIN_4 #define M_G_P_WN GPIO_PIN_5 #define M_G_FAULT GPIOB #define M_G_P_FAULT GPIO_PIN_1 #define M_G_SLEEP GPIOB #define M_G_P_SLEEP GPIO_PIN_2 #define H_G_A GPIOA #define H_G_B GPIOA #define H_G_C GPIOA #define H_G_P_A GPIO_PIN_0 #define H_G_P_B GPIO_PIN_1 #define H_G_P_C GPIO_PIN_2 rcu_periph_clock_enable(RCU_GPIOA); rcu_periph_clock_enable(RCU_AF); timer_parameter_struct timer_initpara; timer_oc_parameter_struct timer_ocintpara; gpio_init(M_G_U, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, M_G_P_U); gpio_init(M_G_V, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, M_G_P_V); gpio_init(M_G_W, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, M_G_P_W); gpio_init(M_G_UN, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, M_G_P_UN); gpio_init(M_G_VN, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, M_G_P_VN); gpio_init(M_G_WN, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, M_G_P_WN); gpio_init(M_G_FAULT, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, M_G_P_FAULT); gpio_init(M_G_SLEEP, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, M_G_P_SLEEP); gpio_bit_reset(M_G_UN, M_G_P_UN); gpio_bit_reset(M_G_VN, M_G_P_VN); gpio_bit_reset(M_G_VN, M_G_P_WN); gpio_bit_set(M_G_FAULT, M_G_P_FAULT); gpio_bit_set(M_G_SLEEP, M_G_P_SLEEP); rcu_periph_clock_enable(RCU_TIMER2); timer_deinit(TIMER2); // timer_struct_para_init(&timer_initpara); timer_initpara.prescaler = 1 - 1; timer_initpara.period = 5000 - 1; timer_initpara.alignedmode = TIMER_COUNTER_EDGE; timer_initpara.counterdirection = TIMER_COUNTER_UP; timer_initpara.clockdivision = TIMER_CKDIV_DIV1; timer_initpara.repetitioncounter = 0; timer_init(TIMER2, &timer_initpara); // timer_channel_output_struct_para_init(&timer_ocintpara); timer_ocintpara.ocidlestate = TIMER_CCX_ENABLE; timer_ocintpara.ocpolarity = TIMER_OC_POLARITY_HIGH; timer_ocintpara.outputstate = TIMER_OC_IDLE_STATE_LOW; timer_ocintpara.ocnidlestate = TIMER_CCXN_DISABLE; timer_ocintpara.ocnpolarity = TIMER_OCN_POLARITY_HIGH; timer_ocintpara.outputnstate = TIMER_OCN_IDLE_STATE_LOW; timer_channel_output_config(TIMER2, TIMER_CH_0, &timer_ocintpara); timer_channel_output_config(TIMER2, TIMER_CH_1, &timer_ocintpara); timer_channel_output_config(TIMER2, TIMER_CH_2, &timer_ocintpara); timer_channel_output_pulse_value_config(TIMER2, TIMER_CH_0, 2500 - 1); timer_channel_output_mode_config(TIMER2, TIMER_CH_0, TIMER_OC_MODE_PWM0); timer_channel_output_shadow_config(TIMER2, TIMER_CH_0, TIMER_OC_SHADOW_DISABLE); timer_channel_output_pulse_value_config(TIMER2, TIMER_CH_1, 2500 - 1); timer_channel_output_mode_config(TIMER2, TIMER_CH_1, TIMER_OC_MODE_PWM0); timer_channel_output_shadow_config(TIMER2, TIMER_CH_1, TIMER_OC_SHADOW_DISABLE); timer_channel_output_pulse_value_config(TIMER2, TIMER_CH_2, 2500 - 1); timer_channel_output_mode_config(TIMER2, TIMER_CH_2, TIMER_OC_MODE_PWM0); timer_channel_output_shadow_config(TIMER2, TIMER_CH_2, TIMER_OC_SHADOW_DISABLE); timer_channel_output_fast_config(TIMER2, TIMER_CH_0, TIMER_OC_FAST_ENABLE); timer_channel_output_clear_config(TIMER2, TIMER_CH_0, TIMER_OC_CLEAR_ENABLE); timer_channel_output_polarity_config(TIMER2, TIMER_CH_0, TIMER_OC_POLARITY_HIGH); timer_channel_output_state_config(TIMER2, TIMER_CH_0, TIMER_CCX_ENABLE); timer_automatic_output_enable(TIMER2); timer_primary_output_config(TIMER2, ENABLE); timer_auto_reload_shadow_enable(TIMER2); timer_enable(TIMER2); gpio_init(H_G_A, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, H_G_P_A); gpio_init(H_G_B, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, H_G_P_B); gpio_init(H_G_C, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, H_G_P_C);

    IO pi timer TI PWM输出 gd32F103

    961浏览量 1回复量 关注量
  • MM32F014 144MHZ PWM sos

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

    工程师 PWM输出 PWM MM32 hz MUC

    1441浏览量 0回复量 关注量
  • PIC16F1939输出PWM在Prescaler=1:1时不正常 sos

    [align=left][font=宋体]我用[/font]PIC16F1939[font=宋体]的[/font]pwm[font=宋体]功能,[/font]PWM4[font=宋体],关联[/font]TMR6[font=宋体]。[/font][/align][align=left][font=宋体]问题是:[/font]T6CON[font=宋体]中的[/font]Prescaler=1:1[font=宋体]时不正常。只在[/font]PWM=4[font=宋体]、[/font]8[font=宋体]、[/font]12[font=宋体]、[/font]16[font=宋体]、[/font]...[font=宋体]时有[/font]PWM[font=宋体]输出,而在其他[/font]PWM[font=宋体]值时恒定输出[/font]H[font=宋体]电平。[/font][/align][align=left][font=宋体]但[/font]T6CON[font=宋体]中的[/font]Prescaler=1:4[font=宋体]、[/font]1:16[font=宋体]、[/font]1:64[font=宋体]时,[/font]PWM[font=宋体]输出正常。[/font][/align]

    PWM SCALE pic16f1939 PWM输出 电平

    8374浏览量 0回复量 关注量
  • AC7811怎么实现PWM一个通道输出的强制同步?

    [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px]在产品设计中用到PWM的一个功能,需要对PWM通道输出做出精准控制。想实现的功能是:在命令发出时立刻终止当前通道的PWM输出周期,同时需要立刻再开启一个新的输出周期。目的是可以随时改变占空比对电磁阀开启时间做出精准无延时控制。[/size][/font][/backcolor][/color] [color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px]现在能实现的功能:开启一个新的PWM输出周期只能在当前PWM输出周期结束后下一个周期开始时才可以。问题是如果我的PWM周期为10MS,如果我的控制指令是在该PWM输出周期刚开始时发出的,PWM要到10MS之后结束前一个周期才能执行我刚才发出的指令。这样就会造成有接近10ms的延时。[/size][/font][/backcolor][/color][color=#444444][backcolor=rgb(255, 255, 255)][font=Tahoma, "][size=15px]现在的控制策略:用PWM通道的周期作为主程序的循环周期,10MS的周期,查询PWM通道计数器的值,在PWM计数器走到8MS时运行主程序并输出PWM通道控制,这样在下一个周期开始时,就可以执行新的PWM通道赋值,这样延时基本上在1MS左右。这个策略接近我原来用NXPs12的控制效果了,但是还是有差异。不能做到完全相同。[/size][/font][/backcolor][/color]

    AC PWM 控制 PWM输出 主程序 指令

    5929浏览量 1回复量 关注量
  • AC7811怎么实现PWM输出的无延时控制? sos

    在产品设计中用到PWM的一个功能,需要对PWM通道输出做出精准控制。想实现的功能是:在命令发出时立刻终止当前通道的PWM输出周期,同时需要立刻再开启一个新的输出周期。目的是可以随时改变占空比对电磁阀开启时间做出精准无延时控制。 现在能实现的功能:开启一个新的PWM输出周期只能在当前PWM输出周期结束后下一个周期开始时才可以。问题是如果我的PWM周期为10MS,如果我的控制指令是在该PWM输出周期刚开始时发出的,PWM要到10MS之后结束前一个周期才能执行我刚才发出的指令。这样就会造成有接近10ms的延时。

    AC7811 国产芯片。 控制 PWM输出 AC 指令

    1930浏览量 0回复量 关注量
  • STM8S003F3P6 pwm输出功耗大

    [i=s] 本帖最后由 lupeisen 于 2021-5-23 10:01 编辑 [/i] 我们在使用单片机的PC6跟PC3的内部PWM输出功能进行半桥驱动,发现功耗接近0.7W,这个正常的吗,导致了5V的LDO也发热量大,这个能通过软件来进行降低功耗吗,有没有大神遇到相同问题的,请指教下,谢谢

    技术交流 PWM输出 stm8s003f3p6 pc LDO 低功耗

    5792浏览量 13回复量 关注量
  • 想请问大家有做过DSP多机重联,错相PWM输出的吗? sos

    想用DSP做多模块Buck变换器的并联错相控制,但是多台控制器DSP之间的时间要如何实现同步呢?想问一下有没有做过的朋友?

    DSP PWM输出 控制 buck BUCK变换器

    899浏览量 0回复量 关注量
  • 看到一份电磁炉的图纸,不明白单片机PWM输出端先串电阻.....

    [attach]1540908[/attach][attach]1540906[/attach]近阶段在学习电磁炉的电路图,不明白单片机PWM输出信号为什么要先串一个10K电阻,然后再并一个1uF电容到地,PWM应该是高频信号,20kHz吧,然而有了电容后,输出给比较器的信号还能jiao

    PWM输出 电阻 电磁炉 单片机 AC

    1788浏览量 7回复量 关注量