【问题标题】:binary count in C whit a button [closed]带有按钮的C中的二进制计数[关闭]
【发布时间】:2020-09-30 15:08:01
【问题描述】:
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,名称为: LED5 LED6 LED7 LED8

如果我点击按钮,我会记入一个数字,我必须将此数字转换为二进制值并将其显示在给定的 LED 上,您能帮帮我吗?

此致

【问题讨论】:

  • 发布的代码与您需要帮助的内容有何关联?
  • @ScottHunter 我很可能是老师提供的用于写作业的空框架。
  • 万一这与家庭作业有关,请研究此处描述的折衷方案meta.stackoverflow.com/questions/334822/…
  • 我用按钮 SW 5 计算一个整数,但我必须将整数值转换为二进制值,然后将其显示在我的 LED 上: LED 5 LED6 LED7 LED8 BV:二进制值 0101 然后 LED 5并且 7 应该会亮起我使用了一个微控制器,这个 stm32f411re 是 @ScottHunter 的类型

标签: c button binary counter gpio


【解决方案1】:

使用& 和 swift<< 你可以这样写:

if (number & 1) {
  AL_GPIO_WritePin(SW5_GPIO_Port, GPIO_PIN_5, 1);
} else {
  AL_GPIO_WritePin(SW5_GPIO_Port, GPIO_PIN_5, 0);
}
if (number & 1 << 1) {
  AL_GPIO_WritePin(SW5_GPIO_Port, GPIO_PIN_6, 1);
} else {
  AL_GPIO_WritePin(SW5_GPIO_Port, GPIO_PIN_6, 0);
}
if (number & 1 << 2) {
  AL_GPIO_WritePin(SW5_GPIO_Port, GPIO_PIN_7, 1);
} else {
  AL_GPIO_WritePin(SW5_GPIO_Port, GPIO_PIN_7, 0);
}
if (number & 1 << 3) {
  AL_GPIO_WritePin(SW5_GPIO_Port, GPIO_PIN_8, 1);
} else {
  AL_GPIO_WritePin(SW5_GPIO_Port, GPIO_PIN_8, 0);
}

不确定激活 GPIO_PIN 的命令,但逻辑在这里

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    相关资源
    最近更新 更多