在外部中断过程中,设置一个计数变量number,在中断服务函数中执行
buf1[number] = (BUF&0XFF);
buf1[number+1] =((BUF>>8)&0XFF);
number=number+2;
在主函数中判断
if(number==1400)
{
number=2;
}
按理说在中断过程中当number计数到1400时主函数重新复位,但是在实际的过程中发现开始几次是可以正常运行的,但运行到后面number就无法复位导致程序卡死,请问一下有人遇到过这种情况吗
可能再一个主循环中进了多次中断,导致执行不到复位操作,可改成
if(number>=1400)
{
number=2;
}
将主函数和中断服务函数截图看下?打印放在哪个函数里?
(1)自制STM32最小系统应用,完成电路板设计与打板,焊接
(2)利用数字式温湿度传感器DHT22完成多点温度检测
(3)利用土壤湿度传感器检测了多点土壤湿度。
(4)基于STM32并利用NRE24L01无线数据传输。
(5)完成系统继电器控制风扇与水泵的设计
(6)利用语音模块完成了对实时数据声音提示。
(7)利用了OLED显示屏显示数据
本系统以STM32单片机最小系统为核心,其中数据采集、传输、显示、语音提示基于STM32的平台。数据采集通过DHT22读取数字量温度值,并通过NRF24L01模块无线传输至数据数据处理终端,同时终端也进行相应温度采集以实现多点温度检测的效果。同理,土壤湿度采集也是如此。
之后,在数据处理终端进行数据比较处理,一方面通过语音模块实时将数据读出,另一方面也将数据显示在OLED屏上。
根据数据处理终端处理后的数据,控制继电器开合与关断,实现对风扇降温,水泵灌溉的反馈处理,做到闭环控制。
对于原问题,请提供更具体的代码以及中断服务函数的内容和具体用法,否则无法提供解决方案。
在中断里改变的全局变量,在声明的时候要加上volatile,
另外就是把==1400改成>=1400