这个是一个系列,咱们先圈个围栏,讲讲程序员和LED相爱相杀的那些事。
当然,把他作为我另一个系列,一个仍然在产品一线“砍一刀”的老兵的日常生活,一个技术性细节的补充,也不错。
=====以上不算字数=====
LED是个好东西,管它是插件的还是贴片的,当它开始在板子上,像是电影中的拆弹警报器上那个带蜂鸣器的家伙一样疯狂闪烁的时候,你和它的相爱相杀,就开始了。
每个大学生单片机课程的学习开始,都免不了被它调戏一番;当前半句被字句变成把字句的时候,就可以做毕设了。
每家原厂的开发板上,都少不了这么个小玩意;每个BSP/SDK/DEMO的入门款,一定是跑马灯。
额,还有升级款,呼吸灯。
额,从GPIO,到中断,定时器,ADC,大概率还是摆弄这个可怜的灯。主打一个身经百战。
往日常生活中望过去,最常见的产品也是灯。至少从爱迪生他老人家整出钨丝电灯泡那年开始,照明就是电子电力行业最核心的需求之一(可能可以去掉之一)。
到了日本的某诺贝尔奖倒霉大神整出来了蓝光LED,灯的世界就比较简明了,全员开始给这小家伙让路。
(此处省略若干万字)扯远了,回来好好说说这个让无数从业者吃饭的家伙(字面意义上),究竟有啥魅力。
点亮第一个LED灯,看起来是个挺没技术含量的事情。不就是把输出管脚的电平拉高吗?
没错,但是,二十年了啊,陪着你的灯珠变了好几茬,----事实上,假如你对灯珠的参数,成本,寿命稍微有点追求的话,这又是一个可以开给专题的系列。不过我们今天主要讲软件,或者说,固件,那这里我们就暂时挖个坑,看以后有没有机会填上。
额,从我从校园中走出来,单片机也换了几茬了,(别看,说的就是你,ATMEL,还有你,STM,你俩是咋从小甜甜变成牛夫人的,自己心里有数吧?)当然了,GD32系列也有它自己的问题,不过我要又跑题,就是不贴段代码的话,系统又要认为咱们是“大海啊,你都是水!”了。
int main(void)
{
rcu_periph_clock_enable(RCU_GPIOF);
gpio_mode_set(GPIOF, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_7);
gpio_output_options_set(GPIOF, GPIO_OTYPE_PP, GPIO_OSPEED_2MHZ, GPIO_PIN_7);
gpio_bit_reset(GPIOF,GPIO_PIN_7);
while(1){
gpio_bit_set(GPIOF,GPIO_PIN_7);
}
}
(除了include, main函数和while循环)只有5行。这么短,咱们就不用markdown了吧,也没人要copy-paste。
方便起见,认为管脚设数字1,高电平就能亮(实际上多数情况是喜欢让灯低电平亮)。
错了,其实一点都不短,当然了,跟它爹STM32相比,彼此彼此,但是我们当年学51的时候(不怕暴露年龄,有请STC89C52,当当当当~),是不用这么麻烦的,诺,你看 -
sbit LED10 = P1^0;
LED10 = 1;
两行,总可以了吧?
可是,如果有强迫症的话,就要说了,还是Arduino吧,这哥们一行就搞定了 -
digitalWrite(1,HIGH);
你杠就是你有理,毕竟咱岁数大了,体力条不够长,还有,这活没人付工钱。
总而言之言而总之就是,点灯就是程序员的基本工作,就跟焊工操烙铁,就跟领导电话催交付一样,属于基操。
当然了,以前的MCU是5v的,现在为了帮我们减少几个的电阻的开销,改3.3v了,所以我们暂且认为这么做挺好,至于说要不要找电压特别低,亮度特别亮,特别能给老板省钱的战斗灯,那是硬件老哥要薅头发的事情,对吧?
就好像,我都写了1600字了,也可以歇口气然后再整续集了,对......吧?待续