输出推挽牛接单端方法

输出推挽牛接单端方法,第1张

1、推挽输出:使用一对参数相同的功率三极管或MOSFET管,以推挽方式存在于电路中。2、单端输出:于线路架构简单,放大波型完整,以一个正弦波输入可以获得一整个正弦波输出,以音响系统来说极为理想。

//定时器3中断服务程序

void TIM3_IRQHandler(void)

{

if(TIM3->SR&0X0002)

{

TIM3->SR&=~(1<<1);

LED1=~LED1;

LED0=~LED0;

// TIM3->CNT=0; //注意这里不能直接置0,如果直接置零,而不作些比较的话,灯就只会亮,而不闪烁,因为只进行一次翻转比较,所以灯只做了一次取反

TIM3->CCR1=TIM3->CCR1+10000;

if(TIM3->CNT==60000)

{

TIM3->CNT=0;

TIM3->CCR1=10000;

}

}

}

//在输出比较模式下,

//预装载寄存器的内容被复制到影子寄存器中,

//然后影子寄存器的内容和计数器进行比较。

void Timerx_Init()

{

RCC->APB1ENR|=0x02; //开启时钟

TIM3->ARR=0xffff; //设定计数器自动重装值

TIM3->PSC=7199; //预分频器7200,得到10Khz的计数时钟,//CK_CNT=Fck_psc/([15:0]+1)

TIM3->CR1&=0<<4; //计数器向上计数

TIM3->CR1|=1<<7; // 使能自动载缓冲器

TIM3->CCMR1|=0x00000030; //翻转模式//当CCR1里的值和TIMx_CNT的值相等,则翻转

TIM3->CCMR1&=0xfffffffc; //配置通道1为输出

TIM3->CCR1=2000; //预装载脉冲

TIM3->CCER&=0xfffffffc; //输出极性为低电平

TIM3->CCMR1&=0xfffffff7; //未使能预装载寄存器

TIM3->DIER|=1<<1; //允许捕获/比较中断

TIM3->CR1|=0x01; //使能计数器

TIM3->CCER|=0x01; //使能输出,信号输出到对应的输出引脚

}

//开复用映射

void AFIO_Configuration()

{

RCC->APB2ENR|=0x01;

AFIO->MAPR|=0x00000c00;

}

//配置端口

void GPIO_Configuration(void)

{

RCC->APB2ENR|=1<<4; //使能PORTC时钟

GPIOC->CRL&=0XF0FFFFFF;

GPIOC->CRL|=0X0b000000;//PC6 推挽输出

}

问题:很奇怪为什么软件可以仿真,效果和预期一样,可是到了板子却不行

解决办法: TIM3->CCR1=TIM3->CCR1+10000;

if(TIM3->CNT==60000)

{

TIM3->CNT=0;

TIM3->CCR1=10000;

}

你理解错了。stm32引脚输出不是一定要以固定频率输出(如果你需要可以通过编程实现),而是若想正确使用stm32引脚功能(不限于输出,包括输入)一定开启gpio时钟,这是外设驱动时钟,是硬件要求的,根据输入输出信号变化的快慢,这个时钟频率可以设置。所以,正确设置(这是比使用51单片机麻烦的地方)后,io管脚像51或其他单片机一样,可以一直保持低电平或高电平输出,直到程序对其状态进行改变。

以上就是关于输出推挽牛接单端方法全部的内容,包括:输出推挽牛接单端方法、如何将通用定时器配置为输出比较模式、怎么使stm32推挽输出引脚开始就是高电平等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10636785.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存