OpenEdv-开源电子网

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

24l01的程序放在定时器中遇到的问题

[复制链接]

2

主题

3

帖子

0

精华

新手入门

积分
34
金钱
34
注册时间
2014-4-15
在线时间
1 小时
发表于 2014-4-15 10:25:28 | 显示全部楼层 |阅读模式
while(1)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;TX_Mode();<br />
&nbsp;&nbsp;&nbsp;&nbsp;tmp_buf[0]='0'+a;<br />
&nbsp;&nbsp;&nbsp;&nbsp;LCD_ShowString(0,190,tmp_buf);         &nbsp;                                 &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(NRF24L01_TxPacket(tmp_buf)==TX_OK)        //每次发送成功后<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCD_ShowString(0,170,"Sended DATA:");                         &nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;a++;<br />
}<br />
在原子哥程序的基础上,我改的上面在主函数中的这段程序实际测试是没问题的<br />
我想把无线发送的的程序放在定时器中,可是出现了一些问题<br />
程序就会卡在<span>if(NRF24L01_TxPacket(tmp_buf)==TX_OK)执行不下去,实在不是很明白,求解,谢谢!<br />
下面是我在定时器中的服务函数,定时器时间为1s发送一次<br />
void TIM3_IRQHandler(void) &nbsp; //TIM3中断<br />
{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIM_ClearITPendingBit(TIM3, TIM_IT_Update &nbsp;); &nbsp;//清除TIMx的中断待处理位:TIM 中断源&nbsp;<br />
<br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TX_Mode();</span><br />
<span></span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>tmp_buf[0]='0'+a;</span><br />
<span></span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>LCD_ShowString(0,190,tmp_buf);         &nbsp; &nbsp;</span><br />
<span></span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>if(NRF24L01_TxPacket(tmp_buf)==TX_OK)        //每次发送成功后</span><br />
<span></span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>{</span><br />
<span></span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>LCD_ShowString(0,170,"Sended DATA:");         &nbsp;&nbsp;</span><br />
<span></span><span>&nbsp;&nbsp;&nbsp;</span><span>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>}</span><br />
<span></span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>a++;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span><br />
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

39

主题

2026

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
发表于 2014-4-15 11:39:21 | 显示全部楼层
尽量不要在定时器中断服务函数中放这么多东西,只改变标志位,在while(1)里面执行
博观而约取,厚积而薄发。
回复 支持 反对

使用道具 举报

2

主题

3

帖子

0

精华

新手入门

积分
34
金钱
34
注册时间
2014-4-15
在线时间
1 小时
 楼主| 发表于 2014-4-15 23:13:34 | 显示全部楼层
回复【2楼】745021926:
<br>---------------------------------
<br>谢谢,这个我也明白,但是遇到主函数要执行很多任务时,这个时候只能让定时器出马了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 16:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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