本帖最后由 指尖◆烟草香 于 2017-8-1 08:20 编辑
在把开发环境搭建好后,已经迫不及待的要试一试这款芯片基本的操作了。先上一下板子流水灯部分的原理图。
板子上有八颗LED灯,正好,就拿来做个最经典的流水灯吧。从原理图我们可以看出来,板子的LED灯分别连在了PIO0的15、19、21、22、25、26、29、30这八个脚上,其实有点浪费了哈。
这8个发光二极管,其中4个低电平驱动(绿色),4个高电平驱动(红色),要注意这一点,这八个灯的驱动电平不一样。
下面,我们先初始化一下板子的用到流水灯的这几个引脚。这个函数体在pin_mux.c这个文件内,代码全部粘上太多了,大家自己下载附件去看吧。
void BOARD_InitBootPins(void) {
然后再对板子时钟进行初始化。
- void BOARD_InitBootClocks(void)
- {
- BOARD_BootClockRUN();
- }
这个函数体在也在pin_mux.c这个文件内。
然后对LED的相关引脚进行初始化
- void LED_init()
- {
- gpio_pin_config_t config_low = {kGPIO_DigitalOutput,0,};
- gpio_pin_config_t config_high = {kGPIO_DigitalOutput,1,};
- CLOCK_EnableClock(kCLOCK_Gpio0);
- GPIO_PinInit(BOARD_INITPINS_LED0_GPIO, BOARD_INITPINS_LED0_PORT, BOARD_INITPINS_LED0_GPIO_PIN, &config_low);
- GPIO_PinInit(BOARD_INITPINS_LED1_GPIO, BOARD_INITPINS_LED1_PORT, BOARD_INITPINS_LED1_GPIO_PIN, &config_low);
- GPIO_PinInit(BOARD_INITPINS_LED2_GPIO, BOARD_INITPINS_LED2_PORT, BOARD_INITPINS_LED2_GPIO_PIN, &config_low);
- GPIO_PinInit(BOARD_INITPINS_LED3_GPIO, BOARD_INITPINS_LED3_PORT, BOARD_INITPINS_LED3_GPIO_PIN, &config_low);
- GPIO_PinInit(BOARD_INITPINS_LED4_GPIO, BOARD_INITPINS_LED4_PORT, BOARD_INITPINS_LED4_GPIO_PIN, &config_high);
- GPIO_PinInit(BOARD_INITPINS_LED5_GPIO, BOARD_INITPINS_LED5_PORT, BOARD_INITPINS_LED5_GPIO_PIN, &config_high);
- GPIO_PinInit(BOARD_INITPINS_LED6_GPIO, BOARD_INITPINS_LED6_PORT, BOARD_INITPINS_LED6_GPIO_PIN, &config_high);
- GPIO_PinInit(BOARD_INITPINS_LED7_GPIO, BOARD_INITPINS_LED7_PORT, BOARD_INITPINS_LED7_GPIO_PIN, &config_high);
- }
再来一个简单的延时函数,
- void delay(void)
- {
- volatile uint32_t i = 0;
- for (i = 0; i < 1000000; ++i)
- {
- __asm("NOP");
- }
- }
LED状态控制
- GPIO_SetPinsOutput(BOARD_INITPINS_LED0_GPIO, BOARD_INITPINS_LED0_PORT, 1U << BOARD_INITPINS_LED0_GPIO_PIN);
- delay();
- GPIO_ClearPinsOutput(BOARD_INITPINS_LED0_GPIO, BOARD_INITPINS_LED0_PORT, 1U << BOARD_INITPINS_LED0_GPIO_PIN);
这是控制一颗灯的,其余几个一次类推。到这里,程序差不多就可以写完了,这是用库函数来写的,有空的时候琢磨琢磨它的寄存器来试试。
配置好调试器
下载成功!
来几张高清效果图看看:
红灯(高电平亮)
绿灯(低电平亮)
再来张动图看看:
好了,今天的板子评测就先写到这里了。哈哈,眼睛好累,得去歇一会的。