標(biāo)題: OKdo E1開發(fā)板之按鍵控制LED燈 [打印本頁(yè)]
作者: jinglixixi 時(shí)間: 2020-11-3 10:17
標(biāo)題: OKdo E1開發(fā)板之按鍵控制LED燈
在OKdo E1開發(fā)板上配置了LED和KEY,通過它們可以學(xué)習(xí)和掌握I/O口的使用方法,其原理圖見圖1所示。
1.jpg (27.4 KB, 下載次數(shù): 50)
下載附件
2020-11-3 10:17 上傳
圖1 LED和KEY原理圖
由此我們可以獲知它們與MCU的連接關(guān)系如下:
LEDR ---PIO1_4
LEDB ---PIO1_6
LEDG ---PIO1_7
WAKEUP--- PIO1_18
USER --- PIO1_9
ISP --- PIO0_5
為此LED和KEY的初始定義如下:
LED的引腳定義:
#defineLEDR_PORT 1u
#defineLEDR_PIN 4u
#defineLEDR_FUNC (IOCON_FUNC0 | IOCON_MODE_PULLUP |IOCON_DIGITAL_EN)
#defineLEDG_PORT 1u
#defineLEDG_PIN 7u
#defineLEDG_FUNC (IOCON_FUNC0 | IOCON_MODE_PULLUP | IOCON_DIGITAL_EN)
#defineLEDB_PORT 1u
#defineLEDB_PIN 6u
#defineLEDB_FUNC (IOCON_FUNC0 | IOCON_MODE_PULLUP |IOCON_DIGITAL_EN)
#defineLEDR_NUM 1u
#defineLEDG_NUM 2u
#defineLEDB_NUM 3u
KEY的引腳定義:
#defineKEY_S2_PORT 0u
#defineKEY_S2_PIN 5u
#defineKEY_S2_FUNC (IOCON_FUNC0 |IOCON_MODE_PULLUP | IOCON_DIGITAL_EN)
#defineKEY_S3_PORT 1u
#defineKEY_S3_PIN 18u
#defineKEY_S3_FUNC (IOCON_FUNC0 | IOCON_MODE_PULLUP| IOCON_DIGITAL_EN)
#defineKEY_S1_PORT 1u
#defineKEY_S1_PIN 9u
#defineKEY_S1_FUNC (IOCON_FUNC0 |IOCON_MODE_PULLUP | IOCON_DIGITAL_EN)
#defineKEY2_NUM 0x02
#defineKEY3_NUM 0x01
#define KEY1_NUM 0x04
LED的初始化函數(shù):
- void led_init(void)
- {
- gpio_pin_config_t gpioPinConfig;
- gpioPinConfig.pinDirection = kGPIO_DigitalOutput;
- gpioPinConfig.outputLogic = 1u; /* output high as default. */
- GPIO_PinInit (GPIO, LEDR_PORT, LEDR_PIN, &gpioPinConfig);
- GPIO_PinInit (GPIO, LEDG_PORT, LEDG_PIN, &gpioPinConfig);
- GPIO_PinInit (GPIO, LEDB_PORT, LEDB_PIN, &gpioPinConfig);
- }
復(fù)制代碼
KEY
的初始化函數(shù):- void key_init(void)
- {
- static uint32_t i = 0;
- gpio_pin_config_t gpioPinConfig;
- gpioPinConfig.pinDirection = kGPIO_DigitalInput;
- gpioPinConfig.outputLogic = 1u;
- CLOCK_EnableClock(kCLOCK_Iocon);
- IOCON->PIO[KEY_S2_PORT][KEY_S2_PIN] = KEY_S2_FUNC;
- IOCON->PIO[KEY_S3_PORT][KEY_S3_PIN] = KEY_S3_FUNC;
- IOCON->PIO[KEY_S1_PORT][KEY_S1_PIN] = KEY_S1_FUNC;
- CLOCK_DisableClock(kCLOCK_Iocon);
- GPIO_PinInit (GPIO, KEY_S2_PORT, KEY_S2_PIN, &gpioPinConfig);
- GPIO_PinInit (GPIO, KEY_S3_PORT, KEY_S3_PIN, &gpioPinConfig);
- GPIO_PinInit (GPIO, KEY_S1_PORT, KEY_S1_PIN, &gpioPinConfig);
- }
復(fù)制代碼
KEY控制LED的主程序:
- int main(void)
- {
- volatile uint8_t s_KeyValue = 0;
- POWER_SetBodVbatLevel(kPOWER_BodVbatLevel1650mv, kPOWER_BodHystLevel50mv, false);
- CLOCK_EnableClock(kCLOCK_Gpio0);
- CLOCK_EnableClock(kCLOCK_Gpio1);
- BOARD_BootClockFROHF96M();
- led_init();
- key_init();
- while (1)
- {
- s_KeyValue = key_read();
- if( (s_KeyValue&KEY2_NUM) == KEY2_NUM) // ISP
- {
- led_set(LEDR_NUM, 0);
- }
- else
- {
- led_set(LEDR_NUM, 1);
- }
- if( (s_KeyValue&KEY3_NUM) == KEY3_NUM) // WAKE
- {
- led_set(LEDG_NUM, 0);
- }
- else
- {
- led_set(LEDG_NUM, 1);
- }
- if( (s_KeyValue&KEY1_NUM) == KEY1_NUM) // USER
- {
- led_set(LEDB_NUM, 0);
- }
- else
- {
- led_set(LEDB_NUM, 1);
- }
- }
- }
復(fù)制代碼
經(jīng)編譯下載,其運(yùn)行效果如圖2~圖4所示。
2.jpg (47.14 KB, 下載次數(shù): 79)
下載附件
2020-11-3 10:17 上傳
歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |