中级会员
 
- 积分
- 268
- 金钱
- 268
- 注册时间
- 2012-1-25
- 在线时间
- 1 小时
|

楼主 |
发表于 2012-3-26 16:36:46
|
显示全部楼层
Hi, 你好。
我用下面的代码还是不行啊。我这里没有数字存储示波器,不能抓波形来看。只能用软件模拟的方式观察波形,而软件看到的波形的读数去不到纳秒级。我观察0码的长度比例为(我用尺子量) 1:1.7 而1码的长度比例为 1.5:1.178 。偏差太大了吧? 问题出在哪里呢?该怎样改呢?
谢谢。
void send_dat(void)
{
u8 i,j,t;
RCC->APB1ENR|=1<<1; //TIM3时钟使能
TIM3-> SC=0;
TIM3->DIER|=1<<0;
TIM3->CR1|=1<<3; //单脉冲模式
for (i=0;i<buff_size;i++)
{
t=buf;
for (j=0;j<8;j++)
{
if (t&0x80)
{
DAT0=1;
TIM3->ARR=72; //1uS的定时器
TIM3->CR1|=1<<0;
while (!(TIM3->SR&1)) ;
TIM3->SR&=~1;
DAT0=0;
TIM3->ARR=36; //0.5uS的定时器
TIM3->CR1|=1<<0;
while (!(TIM3->SR&1)) ;
TIM3->SR&=~1;
}
else
{
DAT0=1;
TIM3->ARR=36; //0.5uS的定时器
TIM3->CR1|=1<<0;
while (!(TIM3->SR&1)) ;
TIM3->SR&=~1;
DAT0=0;
TIM3->ARR=72; //1uS的定时器
TIM3->CR1|=1<<0;
while (!(TIM3->SR&1)) ;
TIM3->SR&=~1;
}
t<<=1;
}
}
}
回复【7楼】正点原子:
--------------------------------- |
|