【C语言学习】为什么我又回去学习C了

起因:

        大二学生,好久没跟新博客了,最近又开始重拾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语言的学习(都怪我大一太混了哭)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值