OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2928|回复: 15

for里面使用延时函数程序就死了 为什么啊

[复制链接]

5

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-9-1
在线时间
38 小时
发表于 2017-9-1 11:02:43 | 显示全部楼层 |阅读模式
volatile u16 i,j;
for(i=0;i<j;i++)
{
  TIM1->CR1 |= TIM_CR1_CEN;
  delay_us(temp1int[2*i]);
  TIM1->CR1 &= (uint16_t)(~((uint16_t)TIM_CR1_CEN));
  delay_us(temp1int[2*i+1]);
}
delay函数使用的原子哥的不采用中断的延时函数


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3888
金钱
3888
注册时间
2017-3-7
在线时间
1694 小时
发表于 2017-9-1 11:26:47 | 显示全部楼层
回复 支持 反对

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2017-9-1 11:33:54 | 显示全部楼层
这种写法就很有问题.  不要深入了,没有意义
自己选择的路,成家前走完。
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-9-1
在线时间
38 小时
 楼主| 发表于 2017-9-1 11:35:33 | 显示全部楼层
j=AT24CXX_ReadOneByte(4+2*base);
j<<=8;
j|=AT24CXX_ReadOneByte(5+2*base);
j是从c64里面读出来的数据  
现在又发现一个问题  如果2个延时注释掉一个  就正常  为什么啊
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-9-1
在线时间
38 小时
 楼主| 发表于 2017-9-1 11:35:59 | 显示全部楼层

j是从存储中读到的数据
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-9-1
在线时间
38 小时
 楼主| 发表于 2017-9-1 11:38:28 | 显示全部楼层
aiyeba 发表于 2017-9-1 11:33
这种写法就很有问题.  不要深入了,没有意义

不是 我现在TIM1产生pwm脉冲,通过延时配合 tim1使能 不使能来模拟按键遥控
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-9-1
在线时间
38 小时
 楼主| 发表于 2017-9-1 11:39:27 | 显示全部楼层
j不是0  是从rc64读到的数据
回复 支持 反对

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2017-9-1 11:45:20 | 显示全部楼层
支离益 发表于 2017-9-1 11:38
不是 我现在TIM1产生pwm脉冲,通过延时配合 tim1使能 不使能来模拟按键遥控

volatile  不要用这个,走路都还不会,还想飞.
原子哥都不用,你都用上了.
自己选择的路,成家前走完。
回复 支持 反对

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2017-9-1 11:49:30 | 显示全部楼层
支离益 发表于 2017-9-1 11:38
不是 我现在TIM1产生pwm脉冲,通过延时配合 tim1使能 不使能来模拟按键遥控

你什么功能  我帮你写个程序
自己选择的路,成家前走完。
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-9-1
在线时间
38 小时
 楼主| 发表于 2017-9-1 11:51:28 | 显示全部楼层
aiyeba 发表于 2017-9-1 11:45
volatile  不要用这个,走路都还不会,还想飞.
原子哥都不用,你都用上了.

延时函数就是用的原子哥的非中断延时 u16 i j 我是这样定义的 之前有人说我这个函数死是因为i j定义的问题 后来才改成volatile的形式  最后发现不是i j定义的问题
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-9-1
在线时间
38 小时
 楼主| 发表于 2017-9-1 11:52:28 | 显示全部楼层
void delay_us(u32 nus) {                         u32 tem;                              SysTick->LOAD=nus*fac_us; //时间加载                                    SysTick->VAL=0x00;        //清空计数器         SysTick->CTRL=0x01 ;      //开始倒数                   do         {                 tem=SysTick->CTRL;         }         while(tem&0x01&&!(tem&(1<<16)));//等待时间到达            SysTick->CTRL=0x00;       //关闭计数器         SysTick->VAL =0X00;       //清空计数器          }
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-9-1
在线时间
38 小时
 楼主| 发表于 2017-9-1 11:56:05 | 显示全部楼层
aiyeba 发表于 2017-9-1 11:49
你什么功能  我帮你写个程序

其实我这个是通过记录遥控的高低电平时间 来模拟遥控  delay里面的数据就是捕获的高低电平时间 TIM1产生38khz pwm波 通过延时来开关pwm实验模拟遥控的波形
回复 支持 反对

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2017-9-1 11:57:23 | 显示全部楼层
支离益 发表于 2017-9-1 11:56
其实我这个是通过记录遥控的高低电平时间 来模拟遥控  delay里面的数据就是捕获的高低电平时间 TIM1产生3 ...

,输入捕获那么好用都不用,你还是把基础打牢阿少年.
自己选择的路,成家前走完。
回复 支持 反对

使用道具 举报

4

主题

349

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1046
金钱
1046
注册时间
2017-5-19
在线时间
335 小时
发表于 2017-9-1 12:33:12 | 显示全部楼层
延时函数初始化了没
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-9-1
在线时间
38 小时
 楼主| 发表于 2017-9-1 13:04:41 | 显示全部楼层
aiyeba 发表于 2017-9-1 11:57
,输入捕获那么好用都不用,你还是把基础打牢阿少年.

输出捕获不好用,我几种方式对比过了 输出捕获比纯采用外部中断每个脉冲多10us左右 我纯外部中断方式每个脉冲差最多2us 我拿示波器看过。我知道问题出在哪里了 我循环体最后一个数值赋值为0.
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2017-9-1
在线时间
38 小时
 楼主| 发表于 2017-9-1 13:05:55 | 显示全部楼层
谢谢大家,知道原因了 我循环体最后执行的那一次 delayus(0)。是这样出错的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 16:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表