OpenEdv-开源电子网

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

STM32主程序会自动循环吗

[复制链接]

10

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2013-5-16
在线时间
0 小时
发表于 2013-6-7 18:05:22 | 显示全部楼层 |阅读模式

int main(void)
 {
    while(1)
 {
 SystemInit();
 delay_init(72);      //延时初始化
 NVIC_Configuration();
 uart_init(9600);
  LED_Init();
 //KEY_Init();
 LCD_Init();
 SM_SPI_Init();//自己写的IO配置函数

 LCD_Clear(WHITE);
 OINT_COLOR=RED;
 
 TN_GetData(0x4c);//这一段是测温函数
 MBTemp=Data;
 GPIO_SetBits(GPIOA,GPIO_Pin_4);

 GPIO_ResetBits(GPIOA,GPIO_Pin_4);
 TN_GetData(0x66);
 HJTemp=Data;
 GPIO_SetBits(GPIOA,GPIO_Pin_4);
 
 MB=MBTemp;
 HJ=HJTemp;
 BT=MBTemp-MB;
 JT=HJTemp-HJ;
 BT=BT*10;
 JT=JT*10;
 
 
 if(MBTemp>30)
 {
  LED0=0;
 }
 Display(MB,HJ,BT,JT);
  
  }
 }

void Display(int a,int b,float c,float d)
{
  LCD_Clear(WHITE);
     
  OINT_COLOR=RED;          
    
  LCD_ShowString(30,50,"TN901"); 
  LCD_ShowString(30,70,"Target:");
  LCD_ShowNum(180,70,a,2,16);
  LCD_ShowChar(200,70,0x2e,16,0);
  LCD_ShowNum(205,70,c,1,16);
  LCD_ShowString(215,70,"^C");
  LCD_ShowString(30,90,"Environment:");
  LCD_ShowNum(180,90,b,2,16);           
  LCD_ShowChar(200,90,0x2e,16,0);
  LCD_ShowNum(205,90,d,1,16);
  LCD_ShowString(215,90,"^C");
      
  delay_ms(1000); 
  
  
}
程序很简单,测温并LCD显示,如果温度大于30则LED0闪烁,都是调用的例程。
为什么不加while(1)主程序就不循环?LCD只显示第一个温度值,LED的亮暗只取决于第一个温度。
更纠结的是,即使加了while(1),主程序循环了,LED工作正常了,但LCD也是只显示第一个温度值?

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-7 19:38:10 | 显示全部楼层
看来楼主基本没怎么写过单片机代码啊,呵呵.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

10

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2013-5-16
在线时间
0 小时
 楼主| 发表于 2013-6-7 20:44:13 | 显示全部楼层
好吧,被鄙视了,大学生,纯新,但求指出问题。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-7 20:48:28 | 显示全部楼层
main函数不会自动循环
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2013-5-31
在线时间
1 小时
发表于 2013-6-7 20:50:06 | 显示全部楼层
while里只包含要循环的,你把初始化的都循环了,无语
我大学没上,初二,拿着钳子在工地当电工了,还好ABC能认识

int main(void)
 {
     SystemInit();
 delay_init(72);      //延时初始化
 NVIC_Configuration();
 uart_init(9600);
  LED_Init();
 //KEY_Init();
 LCD_Init();
 SM_SPI_Init();//自己写的IO配置函数

 LCD_Clear(WHITE);
 OINT_COLOR=RED;
 while(1){                 ///////////////////////////////////////////////////////////搞到这里
 TN_GetData(0x4c);//这一段是测温函数
 MBTemp=Data;
 GPIO_SetBits(GPIOA,GPIO_Pin_4);

 GPIO_ResetBits(GPIOA,GPIO_Pin_4);
 TN_GetData(0x66);
 HJTemp=Data;
 GPIO_SetBits(GPIOA,GPIO_Pin_4);
 
 MB=MBTemp;
 HJ=HJTemp;
 BT=MBTemp-MB;
 JT=HJTemp-HJ;
 BT=BT*10;
 JT=JT*10;
 
 
 if(MBTemp>30)
 {
  LED0=0;
 }
 Display(MB,HJ,BT,JT);
  
  }
 }


回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-6-7 21:21:12 | 显示全部楼层
先学C吧~
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
发表于 2013-6-8 08:47:58 | 显示全部楼层
先学C吧= =。
一直努力就很好。
回复 支持 反对

使用道具 举报

5

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2013-6-5
在线时间
0 小时
发表于 2013-6-8 09:59:49 | 显示全部楼层
学好C语言以后再来学这个吧少年
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-18 22:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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