起因:
大二学生,好久没跟新博客了,最近又开始重拾C语言,之前的STM32已经学习完毕,并完成了32的循迹红外避障小车.
对STM32的外设,时钟树都了解了,但最近在上嵌入式课程,老师突然提出了这样一个问题(如图), 将8个LED灯 依次从两边往中间移动,然后我的第一反应时用数组,确实用数组太简单了,我想用一下循环一句话搞定他。 但当时脑子已经转不过弯来了,竟然没想出解决方法。
(8个LED是共阳极)
下课了才想了想原来很简单。
for(int i=0;i<4;i++)
{
GPIOC->ODR=( ~( (1<<(7-i)) | (1<<i) ) );
}
即:LED从两边往中间流是 两种状态 一是从左向右的灯,二是从右往左 的灯,将这两种状态 按位 或 一下 ,然后取反(LED灯是共阳极 必须给低电平才能点亮),直接给到寄存器中 就可以解决了。
然后我就在思考,为什么这么简单的题目 当时想不出来,作为寒假时就开始偷偷内卷学32的我,感觉很丢脸,后来仔细想想,这不就是一种简单的算法吗,虽然你对32有比别人深入的了解,但是C语言也是嵌入式的基石之一!!!这就是为什么我又开始C语言的学习(都怪我大一太混了哭)