如何解决C中的二进制计数
printf("hello world\r\n");
fflush(stdout);
int number;
number = 0;
while (1)
{
if(HAL_GPIO_ReadPin(SW5_GPIO_Port,SW5_Pin)==GPIO_PIN_RESET){
HAL_Delay(1000);
number = number + 1 ;
printf("number incremented with 1 is: %d\n",number);
}
}
我需要创建一个带有1个按钮的二进制计数器,我之前已经声明了4个led,其名称为: 发光二极管5 发光二极管6 发光二极管7 LED8
如果我点击按钮我记了一个数字,我必须将此数字转换为二进制值并显示在给定的led上,您能帮我吗?
您真诚的
解决方法
使用&
和快速<<
,您可以这样写:
if (number & 1) {
AL_GPIO_WritePin(SW5_GPIO_Port,GPIO_PIN_5,1);
} else {
AL_GPIO_WritePin(SW5_GPIO_Port,0);
}
if (number & 1 << 1) {
AL_GPIO_WritePin(SW5_GPIO_Port,GPIO_PIN_6,0);
}
if (number & 1 << 2) {
AL_GPIO_WritePin(SW5_GPIO_Port,GPIO_PIN_7,0);
}
if (number & 1 << 3) {
AL_GPIO_WritePin(SW5_GPIO_Port,GPIO_PIN_8,0);
}
不确定命令是否激活GPIO_PIN,但逻辑在这里
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。