当前位置:网站首页>2.2 STM32 GPIO操作
2.2 STM32 GPIO操作
2022-07-06 03:20:00 【rou252051452】
1、概述
通过程序进行PIN设备的输入,输出,中断等的验证工作。
2、输入
3、输出
4、中断
4、测试函数
/**
1、输出:
1)使用正点原子开发板北极星的按钮LED0(PB1)和LED1(PB0)作为输出IO测试。
2)按钮按下后,LED0亮
3)按钮松开后,LED0灭
2、输入:
1)使用正点原子开发板北极星的按钮KEY0(PH3)作为输入进行检测
2)按钮按下后,LED0亮
3)按钮松开后,LED0灭
3、中断:
1)使用正点原子开发板北极星的按钮KEY1(PH2)作为中断输入
2)按钮按下后,LED1亮
3)按钮松开后,LED1灭
**/
#include "rtthread.h"
#include "board.h"
//宏定义进行管脚编号的获取。
#define LED0 GET_PIN(B,1)
#define LED1 GET_PIN(B,0)
static rt_uint32_t KEY0 = 0;
static rt_uint32_t KEY2 = 0;
void exti_callback()
{
if(rt_pin_read(KEY2) == PIN_LOW)
{
rt_pin_write(LED1, PIN_LOW);
}
else
{
rt_pin_write(LED1, PIN_HIGH);
}
}
void example_gpio()
{
//通过API获取管脚编号
KEY0 = rt_pin_get("PH.3");
KEY2 = rt_pin_get("PC.13");
//设置管脚模式
rt_pin_mode(LED0, PIN_MODE_OUTPUT);
rt_pin_mode(LED1, PIN_MODE_OUTPUT);
rt_pin_mode(KEY0, PIN_MODE_INPUT_PULLUP);
rt_pin_mode(KEY2, PIN_MODE_INPUT_PULLUP);
//测试LED灯输出
for(rt_int8_t i = 0; i<5 ; i++)
{
rt_pin_write(LED0, PIN_LOW);
rt_pin_write(LED1, PIN_LOW);
rt_thread_delay(500);
rt_pin_write(LED0, PIN_HIGH);
rt_pin_write(LED1, PIN_HIGH);
rt_thread_delay(500);
}
//中断回调函数绑定
rt_pin_attach_irq(KEY2, PIN_IRQ_MODE_RISING_FALLING, exti_callback, RT_NULL);
//中断使能
rt_pin_irq_enable(KEY2, PIN_IRQ_ENABLE);
while(1)
{
if(rt_pin_read(KEY0) == PIN_LOW)
{
rt_pin_write(LED0, PIN_LOW);
}
else
{
rt_pin_write(LED0, PIN_HIGH);
}
rt_thread_delay(200);
}
}
MSH_CMD_EXPORT(example_gpio, example_gpio)
完整工程
边栏推荐
猜你喜欢
MPLS experiment
Explore pointers and pointer types in depth
Problems encountered in 2022 work IV
Performance analysis of user login TPS low and CPU full
Game theory matlab
OCR文字識別方法綜述
Linear programming matlab
Microsoft Research, UIUC & Google research | antagonistic training actor critic based on offline training reinforcement learning
【指针训练——八道题】
C # create self host webservice
随机推荐
Leetcode problem solving -- 108 Convert an ordered array into a binary search tree
记录一下逆向任务管理器的过程
SD卡报错“error -110 whilst initialising SD card
11. Container with the most water
What is the investment value of iFLYTEK, which does not make money?
I sorted out a classic interview question for my job hopping friends
ESBuild & SWC浅谈: 新一代构建工具
建模规范:命名规范
Getting started with applet cloud development - getting user search content
Add one to non negative integers in the array
JS音乐在线播放插件vsPlayAudio.js
Custom attribute access__ getattribute__/ Settings__ setattr__/ Delete__ delattr__ method
施努卡:什么是视觉定位系统 视觉系统如何定位
3857 Mercator coordinate system converted to 4326 (WGS84) longitude and latitude coordinates
【paddle】加载模型权重后预测报错AttributeError: ‘Model‘ object has no attribute ‘_place‘
Buuctf question brushing notes - [geek challenge 2019] easysql 1
Leetcode problem solving -- 99 Restore binary search tree
SAP ALV颜色代码对应颜色(整理)
SD card reports an error "error -110 whilst initializing SD card
Force buckle 1189 Maximum number of "balloons"