LED不亮怎么解决
Posted yuanhuang32
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LED不亮怎么解决相关的知识,希望对你有一定的参考价值。
最近用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不亮怎么解决的主要内容,如果未能解决你的问题,请参考以下文章