使用Platformio平台的libopencm3开发框架来开发STM32G0,下面为GPIO接按键的使用方式。
1 新建项目在PIO主页新建项目button,框架选择libopencm3,开发板选择 MonkeyPi_STM32_G070RB; 新建完成后在src目录新建主程序文件main.c; 然后更改项目文件platformio.ini的烧写和调试方式:
- 1upload_protocol = cmsis-dap
- 2debug_tool = cmsis-dap
复制代码
2 轮询方式使用按键- 1 //set gpio input button
- 2 gpio_mode_setup(GPIOC, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO11);
复制代码
- 1while (1)
- 2{
- 3 if(gpio_get(GPIOC,GPIO11)){
- 4 gpio_toggle(GPIOC,GPIO12);
- 5 }
- 6}
复制代码
使用gpio_get获取按键的状态;
3 外部中断方式使用按键- 1void button_setup(void)
- 2{
- 3 rcc_periph_clock_enable(RCC_GPIOC);
- 4
- 5 nvic_enable_irq(NVIC_EXTI4_15_IRQ);
- 6
- 7 gpio_mode_setup(GPIOC,
- 8 GPIO_MODE_INPUT,
- 9 GPIO_PUPD_NONE,
- 10 GPIO11);
- 11
- 12 exti_select_source(EXTI11, GPIOC);
- 13 exti_set_trigger(EXTI11, EXTI_TRIGGER_FALLING);
- 14 exti_enable_request(EXTI11);
- 15}
复制代码
设置GPIOC11外部中断,引脚设置为输入模式,然后开启中断,并设置中断下降沿触发方式;
- 1/**
- 2 * @brief EXTI4-15 Interrupt service routine.
- 3 */
- 4void exti4_15_isr(void)
- 5{
- 6 exti_reset_request(EXTI11);
- 7
- 8 gpio_toggle(GPIOC, GPIO12);
- 9}
复制代码
外部中断4-15共用中断函数exti4_15_isr;
转载自:MakerInChina.cn
|