OpenEdv-开源电子网

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

如何在程序中使用u32这个类型啊。

[复制链接]

1

主题

1

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2013-10-16
在线时间
0 小时
发表于 2013-12-10 16:58:14 | 显示全部楼层 |阅读模式

如何在程序中使用u32这个类型啊。 我用的keil 4.5


#include "stm32f10x.h"

int main(void)
{
 GPIO_InitTypeDef GPIO_Init1;
 GPIO_Init1.GPIO_Pin = GPIO_Pin_0;
 GPIO_Init1.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init1.GPIO_Mode = GPIO_Mode_Out_PP;
 GPIO_Init(GPIOA,&GPIO_Init1);
 u32 i = 10;
 while(1)
 {
  GPIO_SetBits(GPIOA,GPIO_Pin_0);
  GPIO_ResetBits(GPIOA,GPIO_Pin_0);
  i--;
 }

 return(0);
}


报错 main.c(11): error:  #268: declaration may not appear after executable statement in block

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

使用道具 举报

17

主题

470

帖子

1

精华

高级会员

Rank: 4

积分
718
金钱
718
注册时间
2013-11-23
在线时间
0 小时
发表于 2013-12-10 17:20:56 | 显示全部楼层
1.楼主,i减到0了怎么办?不管的话编译器会警告
2.这个变量你是想放在循环里还是外,如果外进入主函数就定义啊,怎么放在这里;
3.如果放到里面,局部变量循环一次就被回收了,每次i都被重新定义并赋10,重新开辟内存。所以要加static修饰下
 (这个问题不知道是不是编译出错问题,但是这个小问题可能导致和你的初衷相违背)
 while(1)
 {
   static  u32  i = 10;
  GPIO_SetBits(GPIOA,GPIO_Pin_0);
  GPIO_ResetBits(GPIOA,GPIO_Pin_0);
  i--;
  if(i==0)break;
 }
 return 0;
}
回复 支持 反对

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12048
金钱
12048
注册时间
2013-3-8
在线时间
1282 小时
发表于 2013-12-10 22:13:53 | 显示全部楼层
回复【楼主位】luosoft:
---------------------------------
定义变量一定要在函数最前面,C与C++不一定,C++可以在任意位置定义变量,但C不行,只能先定义变量,再执行其他内容!
回复 支持 反对

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12048
金钱
12048
注册时间
2013-3-8
在线时间
1282 小时
发表于 2013-12-10 22:16:12 | 显示全部楼层
回复【3楼】augustedward:
---------------------------------
还有,你定义这个变量i,根本就没有用到,很有可能在编译时被编译器优化掉
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-16 00:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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