//#include
#include "key.h"
#include "SYSTICK.h"
void main()
{
init();
GPIOC->CRL &=~ (0xff<<0);
GPIOC->CRL |= (3<<0)|(3<<4);
GPIOC->ODR |= 0;
TIM5->ARR = 500 ;
TIM5->CCR1 = 250;
while(1)
{
scan();
}
}
void init()
{
SystemInit();
SYSTICK_Init(72);
RCC->APB2ENR |= (1<<11) | (1<<4) | (1<<2) | (1<<0); //打开pc pa和t1时钟
GPIOC->CRL &=~ (0xff<<0);
GPIOC->CRL |= (1<<3)|(1<<7);
GPIOC->ODR |= (1<<0)|(1<<1); //按钮io初始化
GPIOA->CRH |= (11<<0)|(11<<4)|(11<<8)| (11<<12); //设置PA口为50M复用推挽输出
RCC->APB1ENR |= (1<<3); //开启t5的时钟 led
RCC->APB2ENR |= (1<<2)|(1<<0);
TIM5->CR1 |= (0<<4)|(1<<7);//向上计数,使能重装载寄存器
TIM5->ARR = 20;//周期设置
TIM5->PSC = 0; //预分频设置
TIM5->CCMR1 &=~ ((3<<8)|(3<<0));////设置为ch1 ch2为输出模式
TIM5->CCMR1 |= (7<<12)|(1<<11)|(7<<4)|(1<<3); //pwm模式和输出比较预装载使能
TIM5->CCMR2 &=~ ((3<<8)|(3<<0));//设置为ch4 ch3为输出模式
TIM5->CCMR2 |= (7<<12)|(1<<11)|(7<<4)|(1<<3); //pwm模式和输出比较预装载使能
TIM5->CCER |= (1<<12)|(1<<8)|(1<<4)|(1<<0);//开启ch4输出
TIM5->CR1|=(1<<0);
TIM5->CCR1 = 10;
GPIOA->CRL &=~ (0xf<<0);
GPIOA->CRL |= (2<<2)|(3<<0);
GPIOA->CRL &=~ (0xf<<4);
GPIOA->CRL |= (2<<6)|(3<<4);
GPIOA->CRL &=~ (0xf<<8);
GPIOA->CRL |= (2<<10)|(3<<8);
GPIOA->CRL &=~ (0xf<<12);
GPIOA->CRL |= (2<<14)|(3<<12);
}
void scan()
{
if(Scan_Mode())
{
TIM5->ARR = TIM5->ARR+100 ;
TIM5->CCR1 = TIM5->CCR1+50 ;
TIM5->EGR = 1;
}
if(Scan_Add())
{
TIM5->ARR = TIM5->ARR-50 ;
TIM5->CCR1 = TIM5->CCR1-25 ;
TIM5->EGR = 1;
}
}
这是直接测量管角上的波形
这是接了一块非常不好的导线,测量的波形
100KHZ方波,测试电阻0欧,方方正正的,很好看
当测试电阻为10K时,波形已经变成这个鸟样子了,可以看到,图中的最大电压也从3.6V降到了3.28V
这是30K的样子,最大电压和最小电压都变了。
这是50K的样子,已经看不出原来波形的样子了,直接变成了很短的三角波了。看来这小小的电阻还是真厉害啊。
1MHZ 测试电阻为0欧,貌似还凑合
1K测试电阻,我怎么看,怎么想锯条,锯锯齿,锯锯齿的
这是10K的测试电阻,已经快变成1条线了
这是10MHZ的频率,测试电阻为0欧,啥也没加,就已经变形了
这个是10MHZ,1k测试电阻,就已经啥也没有了
从上面这个这些图可以看出,在低频情况下,长距离传输数据,信号畸变是小的,电阻的大小,对波形不构成太大影响
而超过1K频率时,电阻的增加是波形产生扭曲,而且信号频率越大,或者电阻越大,情况就越严重,而超过10Mhz的时候,1K的电阻就已经会使信号面目全非了。
方案二:采用上拉电阻的形式,看看能不能矫正扭曲的波形呢?
在开漏模式下,试了一下10K上拉电阻,650K左右的频率,样子也蛮奇怪的,呵呵
这种图形,基本上不会给波形带来任何效果,试了一下,不好用。
只是电阻的话,估计不会给波形带来啥效果,要不,就不用那么复杂的电路了,其他的接入方法,就不试了,也没想出来还有啥方法,明天测试电容的。
上一篇:STM32单片机定时器调试之方波输出
下一篇:关于stm32的优先级
推荐阅读最新更新时间:2024-03-16 14:03