码迷,mamicode.com
首页 > 其他好文 > 详细

LED不亮怎么解决

时间:2020-01-18 18:09:50      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:figure   不兼容   http   config   技术   时间   strong   执行   学生   

最近用IAR,玩了一下CC2541.
自己写了个最简单的程序。
 

#include <ioCC2541.h>
 
int main(void)
{

  P1SEL = 0;       // 由注释中的语句删除“//”后得到     //P1SEL = 0; // Configure Port 1 as GPIO

  P1DIR = 0xFF;      //P1DIR = 0xFF; // All port 1 pins (P1.0-P1.7) as output 

  P1_0 = 0;         //P1_0 = 0;

  while(1)
  { 
    for(unsigned short i = 60000;i > 0;i--);
 
    P1_0 = ~P1_0;
  }
  return 0;
}
 
首先是编译不通过,然后main函数里面的第一到三行是将代码注释符号去掉(CTRL+SHIFT+K)后留下的,将变量前的空格全都去除后编译通过了。
然后是在main函数体里面用for循环的延时的代码直接被跳过了,没有生成在可执行代码里面。于是写了一个delay函数调用就好了。
 
IAR真会折腾人啊。另外,我在编辑代码的时候也用到了VScode,不知道是否是不兼容引起的。
 
本以为LED该灯亮起来了。结果不为所动。用万用表量一下电压,在表笔接触到评估版的LED时居然亮起来了。
细看PCBA,也不像虚焊,莫名其妙有没有。换另一块评估版烧录一次点亮。
 
附上几张过程图片:
技术图片
 技术图片
技术图片
 
 
 
最终的代码小学生都懂,如下所示:

#include <ioCC2541.h>
 
void delay(unsigned short ccount);
 
int main(void)
{

P1SEL = 0; // Configure Port 1 as GPIO

P1DIR = 0xFF; // All port 1 pins (P1.0-P1.7) as output 

P1_0 = 0;

  while(1)
  { 
    delay(60000);
    P1_0 = ~P1_0;
  }
  return 0;
}
 
 void delay(unsigned short ccount)
 {  
  do
  {
    ccount--;
  }while(ccount > 0);
 }

启示:
再简单的代码的效果是需要跑了才知道的,在编辑,编译,链接,烧录,硬件运行环境中的任何环节都可能出错。
代码化繁为简是查找问题根源的有效办法;硬件莫名奇妙的问题一定有根源,没时间去分析时换一个硬件试试不失为好方法。

LED不亮怎么解决

标签:figure   不兼容   http   config   技术   时间   strong   执行   学生   

原文地址:https://www.cnblogs.com/yuanhuang32/p/12209756.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!