历史上的今天
今天是:2024年09月24日(星期二)
2021年09月24日 | STM8学习笔记----PWM单脉冲模式输出
2021-09-24 来源:eefocus
先看看官方资料对单脉冲模式的介绍
下面看C代码的实现
void PWM_GPIO_Init( void )
{
PC_DDR_DDR6 = 1; //输出管脚 PC6 TIM1_CH1
PC_CR1_C16 = 1; //推挽输出
PC_CR2_C26 = 1; //输出最大10MHZ
PC_DDR_DDR7 = 0; //输入管脚 PC7 TIM1_CH2
PC_CR1_C17 = 1; //带上拉输入
PC_CR2_C27 = 0; //禁止外部中断
}
//TIM1_CH2 设置为输入模式 TIM1_CH1 设置为输出模式
//当检测到 TIM1_CH2 为高电平或者上升沿时,TIM1_CH1 输出一个脉冲,然后又恢复为默认电平
void PWM_Mode( void )
{
TIM1_PSCRH = 0x00; //4MHz
TIM1_PSCRL = 0x03; //时钟分频寄存器 计数器的时钟频率(fCK_CNT)=fCK_PSC/(PSCR[15:0]+1)
/*
此处设置的频率决定了 TIM1_CH1 输出的最高频率,就算TIM1_CH2 输入引脚的在高,TIM1_CH1输出频率也不会高于此频率
TIM1_CH1 输出频率最高为4K Hz,意味着当TIM1_CH2的输入脉冲频率低于4K Hz时,检测到TIM1_CH2的一个高电平或者上升沿时
TIM1_CH1 就会输出一个脉冲,TIM1_CH1输出脉冲的频率和TIM1_CH2输入脉冲的频率一样。但是当TIM1_CH2输入脉冲频率超过4KHz
时,TIM1_CH1输出的脉冲频率也只有4KHZ,如果TIM1_CH2捕获的输入脉冲频率超过4K Hz时,需要修改TIM1_CH1 输出最高频率
*/
TIM1_ARRH = ( u8 )( 1000 >> 8 ) ; //设置PWM的周期 4M / 1000 = 4K
TIM1_ARRL = ( u8 )( 1000 & 0xFF );
TIM1_CCR1H = ( u8 )( 100 >> 8 ); //通道1配置占空比 占空比10%
TIM1_CCR1L = ( u8 )( 100 );
//设置TIM1_CH1 输出模式
TIM1_CCMR1_OC1M = 6; //PWM模式1
TIM1_CCMR1_OC1PE = 1 ; //使能CCR预装载
TIM1_CCER1_CC1P = 0 ; //配置输出极性为高电平
TIM1_CCER1_CC1E = 1 ; //使能通道1PWM的输出
//设置TIM1_CH2 输入捕获模式
TIM1_CCER1_CC2E = 0; //禁止输出
TIM1_CCMR2_CC2S = 0x01 ; //配置通道2为输入模式
TIM1_CCER1_CC2P = 0 ; //捕获高电平或者上升沿
TIM1_CCER1_CC2E = 1; //使能通道捕获
TIM1_SMCR_TS = 6; //滤波后定时器输入2
TIM1_SMCR_SMS = 6; //触发模式 计数器在触发输入TRGI的上升沿启动
TIM1_CR1_DIR = 0; //向上计数
TIM1_CR1_CMS = 0 ; //计数模式为边沿对其模式
TIM1_CR1_OPM = 1; //使能单脉冲模式
TIM1_CR1_ARPE = 0; //禁止自动重装
TIM1_CR1_CEN = 1 ; //使能定时器1
TIM1_BKR_MOE = 1; //主输出使能
TIM1_EGR_UG = 1 ; // 允许在产生更新事件时重装定时器值
}
void PWM_Init( void )
{
PWM_GPIO_Init();
PWM_Mode();
}
PC7引脚输入一个脉冲波,当捕获到上升沿之后,就会通过PC7引脚输出一个脉冲。下面看下测试情况

用函数发生器产生一个100HZ的脉冲波送到单片机PC7口,PC6口输出一个单脉冲。
示波器上黄色波形为函数发生器输入脉冲波,绿色波形为PC6口输出的单脉冲。通过波形可以看到在黄色波形上升沿时,绿色波形发出了一个脉冲。黄色波形发送脉冲的频率为100HZ,绿色波形输出脉冲的频率也为100HZ。
将绿色波形放大看看,是不是程序中设置的4K频率。

从黄色波形上升沿开始,绿色波形输出高电平,高电平持续时间25us左右,低电平持续时间225us左右,整个周期时长25+225=250us,频率刚好是4K。高电平占空比为10%,说明输出的单脉冲和程序设置的一样。
下面将输入脉冲波频率设置为4K,占空比设置为10%,看看单脉冲输出是不是和脉冲输入波形是一样的。

通过实测可以看到,输入脉冲波频率为4K,占空比为10%,输出的单脉冲和输入的是一样的。
下面将输入脉冲频率增加到8K

可以看到黄色输入脉冲波的频率增加到8K时,输出单脉冲的频率依然是4K。说明要想正常使用单脉冲模式时,输入捕获脉冲的频率要低于单脉冲的输出频率。
史海拾趣
|
将当今的汽车说成是电子产品毫不过分,而且有人预言今后还会在安全、环保和信息化这三个领域加速实现电子化。这一趋势今后肯定只会加速而不可能停滞。因为汽车厂商在安全、环保和信息化这三个领域里早就提出了加速实现电子化的方针。而其中最值得关 ...… 查看全部问答> |
|
前段时间接触过一台166HZ,132KW的1W转的电机是风机上用的,用我们CHF100-132G的变频器带动,启动的时候电流特别大,得235A的电流。很容易在启动的时候跳过电流故障,有谁接触过的,可以说明下这类电机相关的特性,最近客户又说开不起来了,暂时有 ...… 查看全部问答> |
|
ce下的ReadFile()读串口时,是立刻返回,还是等待? 对这个问题比较迷惑,当使用ReadFile(),读串口时,如果没有数据过来,它是立刻返回还是在哪儿等待,如果等待,等多长时间?如果立刻返回,当数据过来时,我如何得到那个数据?… 查看全部问答> |
|
用GSOAP做ARM+uclinux的web service 因为gsoap可以生成C,不知有谁做过类似的移植。 是否可行?对gsoap需要哪些改动吗? 望交流email:xia_1029@tom.com qq:173160851… 查看全部问答> |
|
最近手头碰到一个利用RC对全波整流滤波的电路,电路看上去很简单,用Pspice仿真很容易出来相应的值,但是考虑用数学方程表述时却不是那么简单了,一般我们见的RC不是理解为积分就是电容的瞬态响应再者用低通理解,可是全试了一遍,几 ...… 查看全部问答> |
|
具有 6 位点校正功能的 16 通道 12 位 PWM LED 驱动器 你想知道大屏幕视频是怎样成功驱动成千上万个小LED的吗?德仪DC/DC转换器应用主管Michael Day为您展示具有 6 位点校正功能的 16 通道 12 位 PWM LED 驱动器,更多信息请访问http://focus.ti.com.cn/cn/docs/prod/folders/print/tlc5946.html… 查看全部问答> |
|
本人虽用vs2008 c#基于电脑应用程序开发也有很长时间了,但类似环境下的IC板游戏开发一无所知,目的是想像市面上的IC板类的游戏(如:猜色子点数大小 游戏)自己能开发一套类似的游戏出来运行在IC板上。列举问题如下:1、IC板的硬件是否也有一个类似 ...… 查看全部问答> |







