对于这个全新的 MCU,还是很惊喜的,他的开发环境 和传统的Keil不一样,传统mcu产商会
提供一堆历程,而先辑半导体提供的是一个sdk,再通过Cmake工具生成具体的历程。
1. 安装编译器:
推荐使用segger的 Embedded Studio, 此编译器不叫破解,需要发邮件申请一个license就可以使用了。
SEGGER EmbeddedStudio的激活码申请方式: SEGGER Embedded Studio License Activation
填入你的姓名、邮箱、MAC地址等信息,就可以收到激活码了:
或下面的链接。
2。 安装好驱动:默认USB 插上电脑后,能显示2个串口,这是不对的,调试器还没识别,需要安装驱动。
驱动在 SDK的tools 目录下:
C:\RisV\HPM6750EVKMINI\gitee\tools
安装好如图所示:
3. 接下来可以常识sdk中的历程:
这里先选择一个sample,再生成Project。
最后,用Embedded Studio打开,就可以编译和仿真了。
代码如下:
1. 按键中断初始化:
void test_gpio_input_interrupt(void){ gpio_interrupt_trigger_t trigger; printf("input interrupt\n"); #ifdef BOARD_LED_GPIO_CTRL printf("user led will be switched on off based on user switch\n"); gpio_set_pin_output(BOARD_LED_GPIO_CTRL, BOARD_LED_GPIO_INDEX, BOARD_LED_GPIO_PIN); #endif gpio_set_pin_input(BOARD_APP_GPIO_CTRL, BOARD_APP_GPIO_INDEX, BOARD_APP_GPIO_PIN); trigger = gpio_interrupt_trigger_edge_falling; gpio_config_pin_interrupt(BOARD_APP_GPIO_CTRL, BOARD_APP_GPIO_INDEX, BOARD_APP_GPIO_PIN, trigger); gpio_enable_pin_interrupt(BOARD_APP_GPIO_CTRL, BOARD_APP_GPIO_INDEX, BOARD_APP_GPIO_PIN); intc_m_enable_irq_with_priority(BOARD_APP_GPIO_IRQ, 1); while(1) { __asm("wfi"); } }
复制代码LED 初始化:
void test_gpio_toggle_output(void){ printf("toggling led %u times in total\n", GPIO_TOGGLE_COUNT); gpio_set_pin_output(BOARD_LED_GPIO_CTRL, BOARD_LED_GPIO_INDEX, BOARD_LED_GPIO_PIN); gpio_write_pin(BOARD_LED_GPIO_CTRL, BOARD_LED_GPIO_INDEX, BOARD_LED_GPIO_PIN, BOARD_LED_OFF_LEVEL); for (uint32_t i = 0; i < GPIO_TOGGLE_COUNT; i++) { gpio_toggle_pin(BOARD_LED_GPIO_CTRL, BOARD_LED_GPIO_INDEX, BOARD_LED_GPIO_PIN); board_delay_ms(500); gpio_toggle_pin(BOARD_LED_GPIO_CTRL, BOARD_LED_GPIO_INDEX, BOARD_LED_GPIO_PIN); board_delay_ms(500); printf("toggling led %u/%u times\n", i + 1, GPIO_TOGGLE_COUNT); } }
复制代码void isr_gpio(void){ gpio_clear_pin_interrupt_flag(BOARD_APP_GPIO_CTRL, BOARD_APP_GPIO_INDEX, BOARD_APP_GPIO_PIN); #ifdef BOARD_LED_GPIO_CTRL gpio_toggle_pin(BOARD_LED_GPIO_CTRL, BOARD_LED_GPIO_INDEX, BOARD_LED_GPIO_PIN); printf("toggle led pin output\n"); #else printf("user key pressed\n"); #endif }
复制代码点击全速运行:
按住F10 可以单步运行。
实验结果:
按下User按键后,LED会闪烁一次。