Keil中的软件延时函数不起作用问题查找

这两天使用STM32F103C6实现LED小灯闪烁的功能,延时函数使用的是软件延时,没想到以前在其他程序屡试不爽的延时函数在这居然死活不起作用!!!直接让我一度怀疑了自己的水平了啊(虽然水平确实不咋样不说丧气话)。。。于是一行一行看仔细检查代码,检查软件设置,上百度......翻来覆去始终找不到原因,被折磨得直接怀疑人生,甚至怀疑软件是不是有问题(哈哈哈哈)

被折磨了两天后终于找出了问题。。。程序部分很简单:

LED亮灭的宏定义

//输出低电平为亮,高电平为灭
//LED接在GPIOA的bit0
#define LED_ON  GPIO_ResetBits(GPIOA,GPIO_Pin_0)
#define LED_OFF GPIO_SetBits(GPIOA,GPIO_Pin_0)

LED初始化部分

void LED_Init(void)
{
	//定义GPIO初始化结构体变量
	GPIO_InitTypeDef GPIO_InitStructure;
	//打开要使用端口的时钟->GPIOA
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	//对已选择端口引脚的配置
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
	//端口速度的设置
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	//端口输出模式的设置
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;       //推挽输出
	//对GPIOA端口的初始化
	GPIO_Init(GPIOA,&GPIO_InitStructure);
}

主程序部分

int main()
{
	LED_Init();
	while(1)
	{
		LED_ON;        //亮
		delayms(1000);
		LED_OFF;       //灭
		delayms(1000);
	}
}

就是这样被一个简单的程序折磨了两天

 在一通的鼓捣下,终于把问题解决了(虽然具体原因不清楚...)编译器当时选择的是version 6,在调试的时候发现跳不出delayms()函数,导致程序验证失败,后来把编译器换成了version 5,总算实现了LED的闪烁。。。

编译器version 5和version 6的区别可参考:Keil MDK 编译器 AC5 和 AC6 优化选项重要内容和区别_strongerHuang的博客-CSDN博客

 

 参考:

Keil MDK 编译器 AC5 和 AC6 优化选项重要内容和区别_strongerHuang的博客-CSDN博客

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值