### 志航
:::success
讓LED燈按照順序跑動,按按鈕控制跑馬燈閃爍頻率,任一LED亮燈時觸發蜂鳴器。
:::
- 第一點 <!-- .element: class="fragment" -->
- 第二點 <!-- .element: class="fragment" -->
- 第三點 <!-- .element: class="fragment" -->
<h2>The end</h2>
<a href="#/0">Back to the first</a>
- <span class="fragment highlight-red">這一點按一下才出現,而且是紅色</span>
---
<p style="text-align: left;">這行我要靠左</p>
<img src="https://hackmd.io/_uploads/HJLbPX3gWx.png" style="width: 80%;">
<p style="text-align: right;">這行我要靠右</p>
<p style="font-size: 2.5em;">這行字要放很大</p>
<p style="font-size: 0.5em; color: red; font-weight: bold;">
這行字又大又紅又粗
</p>
<a href="#/0">Back to the first</a>
#### 主要程式碼
:::spoiler
``` c=
#define B1 HAL_GPIO_ReadPin(GPIOD, PB1_Pin)
#define B2 HAL_GPIO_ReadPin(GPIOD, PB2_Pin)
#define SW HAL_GPIO_ReadPin(GPIOD, SW1_Pin)
int main(void)
{
int SP ; // LED燈閃爍頻率
uint16_t L[4]= {LD4_Pin, LD3_Pin, LD5_Pin, LD6_Pin};
int buz = Buzzer_Pin;
while(1) {
//控制LED閃爍頻率
if (B1 == 0 && B2 == 0){
SP = 1;
}
else if(B1 == 0 && B2 == 1){
SP = 2;
}
else if (B1 == 1 && B2 == 0){
SP = 4;
}
else {
SP = 8;
}
// 使用迴圈控制LED 跑馬燈
for (int i = 0; i < 4; i++) {
//使用SW1控制跑馬燈ON-OFF
if(SW == 1){
// LED亮
HAL_GPIO_WritePin(GPIOD, L[i] | buz, GPIO_PIN_SET);
}
for (int j = 0; j < 4; j++) {
if (i != j && SW == 1) {
HAL_GPIO_WritePin(GPIOD, L[j], GPIO_PIN_RESET);
}
}
HAL_Delay(100 / SP);
// LED滅
HAL_GPIO_WritePin(GPIOD, L[i] | buz, GPIO_PIN_RESET);
HAL_Delay(100 / SP);
}
}
}
```
:::
---
{%youtube SvX_ev5MDrA%}
https://youtube.com/shorts/P3TdjOzSB_E?feature=share
<p style="font-size: 1.8em; color: brown; font-weight: bold; font-family: "Noto Sans TC", "微軟正黑體", sans-serif; >
Summary
</p>
{"title":"(志航)GPIO","description":"讓LED燈按照順序跑動,按按鈕控制跑馬燈閃爍頻率,任一LED亮燈時觸發蜂鳴器。","contributors":"[{\"id\":\"ee8f139e-adc8-45cc-b8cf-7c8859ceef62\",\"add\":3457,\"del\":1138,\"latestUpdatedAt\":1763618818644}]","slideOptions":"{\"theme\":\"sky\",\"slideNumber\":\"c/t\"}"}