void Init_Timer2(void)
{
GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_IN_PU_NO_IT);//输入 无中断
TIM2_TimeBaseInit(TIM2_PRESCALER_16,65536-1); //16分频, 65ms 溢出
TIM2_Cmd(ENABLE);
}
uint16_t TIM2_GetCapture(void)
{
/* Get the Capture Register value */
uint16_t tmpccr = 0;
uint8_t tmpccrl=0, tmpccrh=0;
tmpccrh = TIM2->CNTRH;
tmpccrl = TIM2->CNTRL;
tmpccr = (uint16_t)(tmpccrl);
tmpccr |= (uint16_t)((uint16_t)tmpccrh << 8);
/* Get the Capture Register value */
return (uint16_t)tmpccr;
}
void main(void)
{
uint16_t Counter;
System_Initializes();
pwm1_init();
//pwm11();
//pwm12();
pwm13();
while(1)
{
while(SC_READ==0);
//LED_REVERSE;
Counter = TIM2_GetCapture();//计数值赋给变量
TIM2_SetCounter(0); //计数值清零
UART1_SendByte(0xaa);
UART1_SendByte(Counter>>8);
UART1_SendByte(Counter);
while(!SC_READ==0);
Counter = TIM2_GetCapture();//计数值赋给变量
TIM2_SetCounter(0); //计数值清零
UART1_SendByte(0xbb);
UART1_SendByte(Counter>>8);
UART1_SendByte(Counter);
// LED_REVERSE;
}
}
关键字:stm8s 定时器2 脉冲宽度
引用地址:
stm8s 定时器2测量脉冲宽度(单位 us)
推荐阅读最新更新时间:2024-11-05 11:17
基于STM8S微处理器内部EEPROM的数据存储方法
EEPROM(Electrically Erasable Programmable Read-Only Memory)指的是电子擦除式只读存储器,它是一种非易失的存储器,供电消失后,存储的数据依然保留,要擦除或改写其中的内容只要以电子信号的方式直接操作即可。EEPROM广泛应用于单片机数据存储领域,主要形式是串行I2C总线控制独立EEPROM元器件。随着单片机的集成度越来越高,许多芯片厂家在单片机的内部集成有一定数量的EEPROM存储空间,如Microchip、ST等等。本文首先介绍了比较典型的串行EEPROM和集成EEPROM的单片机并比较了各自的优点与缺点,并在分析单片机数据存储特点的基础上引用实例说明如何采用STM8S内
[单片机]
AT89S52之(定时器2)Timer2
定时计数器2是一个16位定时/计数器,通过T2CON寄存器的C/T2位可以选择定时还是计数功能。定时器2 有3种操作模式:捕获、自动重新装载(递增或递减计数)和波特率发生器,这3种模式由T2CON 中的位进行选择,具体的选择方式见表1。定时器2有两个8为寄存器:TH2和TL2。在定时模式状态下,TL2寄存器每一个机器周期加1,。由于52单片机的每一个机器周期等于12的振荡周期,所以他的计数频率是振荡频率的1/12。 表1 RCLK+TCLK CP/RL2 TR2 MODE 0 0 1 16位自重载 0 1 1 16位捕获 1 X 1 波特率发生器 X X 0 关 在计数状态下,
[单片机]
STM8S 115200bps 串口中断连续接收出错问题
内部16M晶振误差太大,导致波特率不准,9600bps可以。要想使用115200,就用外部晶振吧。 还有数据寄存器DR中的数据如果没有及时取走(也可能因为波特率不准)导致数据溢出,出现反复中断现像,如在调试时如果暂停时串口上还有数据,再次运行时DR中的数据将一直是某个数据,正常情况下是不会出现的,解决办法就是进中断的时候清OV标志(不能解决根本问题)。
[单片机]
单片机定时器(timer0工作方式2)
;让LED灯每隔R1ms变化一次 COUNT EQU 92;对于11.0592的晶振来说,92相当于100us LED EQU P1.1 ORG 0000H MOV R0,#00H DJNZ R0,$ MOV SP,#60H MOV R1,#00H ;用R1来作为整体计数时用 MOV R2,#00H //MOV A,TMOD //ANL A,#11110000B //CLR ACC.3 //CLR ACC.2 //CLR ACC.1 //SETB ACC.0 //MOV TMOD,A MOV TMOD,#00000010B ;上面的写法可以用这个代替,更简练一些 MOV TH0,#(256
[单片机]
直接调制自激振荡电路的简易脉冲宽度调制电路
直接调制自激振荡电路的简易脉冲宽度调制电路 电路的功能 采用OP放大器的不稳多谐振荡器可以获得正、负对称的占空比为1:1的振荡输出,若从外部改变阀值电压,即可实现对脉冲宽度的调制,这种电路非常简单。采用CR充放电路,对大调制输入的线性会产生不良影响。振荡频率稳定度取决于CR的时间常,所以稳定度也不会高。不过,它可以作为PWM电力控制电路用。 电路工作原理 在本电路中,如没有输入电阻R2,振荡频率由滞后电压+VE、-VE的周期确定,即: 如果设定R3和R4的比率使方括内的数值为2.718,即IN2.718,那末,振荡频率的计算公式就变得很简单:FO=1/2C1.R1,在这种情况下,用正,负对称的外接滞后调
[模拟电子]
ATmega32 外部复位
外部复位由外加于RESET 引脚的低电平产生。当复位低电平持续时间大于最小脉冲宽度时( 参见Table 15) 即触发复位过程,即使此时并没有时钟信号在运行。当外加信号达到复位门限电压VRST( 上升沿) 时, tTOUT 延时周期开始。延时结束后MCU 即启动。
[单片机]
STM8S TIM1/TIM2 初始化函数
/* TIM2初始化函数 返回值:无 参数:定时时间 us */ #define CPU_CLK 16027 //主频 KHz void timer2_Init(ulong us) { uchar PSCR = 0; //分频 uint pow; ulong ARR; start: pow=1; for(uchar i=0;i PSCR;i++) //算2的n次方 { pow *= 2; } if(us 250000) ARR = (((((us-1)/ 1000) * CPU_CLK) )/pow); else ARR = ((((us-1) * CPU_CLK+
[单片机]
STM8S_010_I2C读写EEPROM(硬件方式)
Ⅰ、写在前面 相信看过前面那篇文章“ 更加深入理解I2C总线、协议及应用 ”的人对I2C都有一定的了解了。那篇文章是针对I2C,使用单片机IO模拟I2C方式实现读写操作。 本文将讲述硬件I2C读写操作,也就是由处理器自身硬件的I2C实现时钟、数据的传输过程。 为方便大家阅读,本文内容已经整理成PDF文件: http://pan.baidu.com/s/1i5uWhJR 作者:strongerHuang 版权所有,未经允许,禁止用于其它商业用途!!! Ⅱ、STM8硬件I2C知识 STM8S的I2C模块不仅可以接收和发送数据,还可以在接收时将数据从串行转换成并行数据,在发送时将数据从并行转换成串行数据。可以开启或禁止
[单片机]