//#include <stdio.h>
#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); //設(shè)置PA口為50M復(fù)用推挽輸出
RCC->APB1ENR |= (1<<3); //開啟t5的時鐘 led
RCC->APB2ENR |= (1<<2)|(1<<0);
TIM5->CR1 |= (0<<4)|(1<<7);//向上計數(shù),使能重裝載寄存器
TIM5->ARR = 20;//周期設(shè)置
TIM5->PSC = 0; //預(yù)分頻設(shè)置
TIM5->CCMR1 &=~ ((3<<8)|(3<<0));////設(shè)置為ch1 ch2為輸出模式
TIM5->CCMR1 |= (7<<12)|(1<<11)|(7<<4)|(1<<3); //pwm模式和輸出比較預(yù)裝載使能
TIM5->CCMR2 &=~ ((3<<8)|(3<<0));//設(shè)置為ch4 ch3為輸出模式
TIM5->CCMR2 |= (7<<12)|(1<<11)|(7<<4)|(1<<3); //pwm模式和輸出比較預(yù)裝載使能
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歐,方方正正的,很好看
當(dāng)測試電阻為10K時,波形已經(jīng)變成這個鳥樣子了,可以看到,圖中的最大電壓也從3.6V降到了3.28V
這是30K的樣子,最大電壓和最小電壓都變了。
這是50K的樣子,已經(jīng)看不出原來波形的樣子了,直接變成了很短的三角波了。看來這小小的電阻還是真厲害啊。
1MHZ 測試電阻為0歐,貌似還湊合
這是10K的測試電阻,已經(jīng)快變成1條線了
這是10MHZ的頻率,測試電阻為0歐,啥也沒加,就已經(jīng)變形了
這個是10MHZ,1k測試電阻,就已經(jīng)啥也沒有了
從上面這個這些圖可以看出,在低頻情況下,長距離傳輸數(shù)據(jù),信號畸變是小的,電阻的大小,對波形不構(gòu)成太大影響
而超過1K頻率時,電阻的增加是波形產(chǎn)生扭曲,而且信號頻率越大,或者電阻越大,情況就越嚴(yán)重,而超過10Mhz的時候,1K的電阻就已經(jīng)會使信號面目全非了。
方案二:采用上拉電阻的形式,看看能不能矯正扭曲的波形呢?
在開漏模式下,試了一下10K上拉電阻,650K左右的頻率,樣子也蠻奇怪的,呵呵
這種圖形,基本上不會給波形帶來任何效果,試了一下,不好用。
只是電阻的話,估計不會給波形帶來啥效果,要不,就不用那么復(fù)雜的電路了,其他的接入方法,就不試了,也沒想出來還有啥方法,明天測試電容的。