对STM32官方库封装一:GPIO库
来源:互联网 发布:在淘宝卖什么东西好 编辑:程序博客网 时间:2024/05/30 02:51
上次在Linux下构建好了stm32开发平台,用的是ST官方的库,不过个人感觉人繁琐,不符合个人习惯,就打算给它进行封装一下,方便以后码代码.
===========================================================================
个人原创,转载请注明出处
http://blog.csdn.net/embbnux/article/details/18885277
博主最近在电脑上自建了博客,以后会更多的用那个了,欢迎关注访问,里面也有很多有用资源:
http://www.embbnux.com/
GPIO库:
头文件gpio.h:
//-------------------------------------------------------------------------*// 文件名: gpio.h *// 说 明: gpio驱动头文件 // Writor : Embbnux JI *//------------------------------------------------------------------#ifndef __GPIO_H__#define __GPIO_H__#include "stm32f10x_rcc.h"#include "stm32f10x_gpio.h"//-------------------------------------------------------------------------* //函数名: gpio_rcc * //功 能: 初始化gpio 时钟 * //参 数: RCC_APB2Periph:端口时钟 // RCC_APB2Periph_GPIOx // NewState:初始状态,ENABLE=使能 * //返 回: 无 * //说 明: 无 void gpio_rcc(uint32_t RCC_APB2Periph, FunctionalState NewState);//-------------------------------------------------------------------------* //函数名: gpio_init * //功 能: 初始化gpio * //参 数: GPIOx:端口名 * // index:指定端口引脚 16表示全选 * // dir:引脚方向,0=输入,1=输出 * // data:初始状态,0=低电平,1=高电平 * //返 回: 无 * //说 明: 无 void gpio_init (GPIO_TypeDef* GPIOx, int index, int dir,int data); //-------------------------------------------------------------------------* //函数名: gpio_ctrl * //功 能: 设置引脚状态 * //参 数: GPIOx:端口名 * // index:指定端口引脚 * // data: 状态,0=低电平,1=高电平 * //返 回: 无 * //说 明: 无 * //-------------------------------------------------------------------------*void gpio_ctrl (GPIO_TypeDef* GPIOx, int index, int data); #endif
C文件gpio.c:
//-------------------------------------------------------------------------*// 文件名: gpio.c *// 说 明: gpio驱动头文件 // Writor : Embbnux JI *//------------------------------------------------------------------//-----------------------------------------------------------------------*#include "gpio.h" //包含gpio头文件//-------------------------------------------------------------------------* //函数名: gpio_rcc * //功 能: 初始化gpio 时钟 * //参 数: RCC_APB2Periph:端口时钟 // RCC_APB2Periph_GPIOx // NewState:初始状态,ENABLE=使能 * //返 回: 无 * //说 明: 无 void gpio_rcc(uint32_t RCC_APB2Periph, FunctionalState NewState){ RCC_APB2PeriphClockCmd(RCC_APB2Periph,NewState);}//-------------------------------------------------------------------------* //函数名: gpio_init * //功 能: 初始化gpio * //参 数: GPIOx:端口名 * // index:指定端口引脚 16表示全选 * // dir:引脚方向,0=输入,1=输出 * // data:初始状态,0=低电平,1=高电平 * //返 回: 无 * //说 明: 无 void gpio_init (GPIO_TypeDef* GPIOx, int index, int dir,int data){ uint16_t gpio_pinx[17] ={GPIO_Pin_0,GPIO_Pin_1,GPIO_Pin_2,GPIO_Pin_3, GPIO_Pin_4,GPIO_Pin_5,GPIO_Pin_6,GPIO_Pin_7, GPIO_Pin_8,GPIO_Pin_9,GPIO_Pin_10,GPIO_Pin_11, GPIO_Pin_12,GPIO_Pin_13,GPIO_Pin_14,GPIO_Pin_15,GPIO_Pin_All}; GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = gpio_pinx[index]; // GPIO NoGPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; // slow rise time switch(dir){ case 1: GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // push-pull output break; case 0: GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 上拉输入 break; } GPIO_Init(GPIOx, &GPIO_InitStructure); // GPIOC init} //-------------------------------------------------------------------------* //函数名: gpio_ctrl * //功 能: 设置引脚状态 * //参 数: GPIOx:端口名 * // index:指定端口引脚 * // data: 状态,0=低电平,1=高电平 * //返 回: 无 * //说 明: 无 * //-------------------------------------------------------------------------*void gpio_ctrl (GPIO_TypeDef* GPIOx, int index, int data){ uint16_t gpio_pinx[17] ={GPIO_Pin_0,GPIO_Pin_1,GPIO_Pin_2,GPIO_Pin_3, GPIO_Pin_4,GPIO_Pin_5,GPIO_Pin_6,GPIO_Pin_7, GPIO_Pin_8,GPIO_Pin_9,GPIO_Pin_10,GPIO_Pin_11, GPIO_Pin_12,GPIO_Pin_13,GPIO_Pin_14,GPIO_Pin_15,GPIO_Pin_All}; switch(data){ case 1: GPIO_WriteBit(GPIOx,gpio_pinx[index],Bit_SET); break; case 0: GPIO_WriteBit(GPIOx,gpio_pinx[index],Bit_RESET); break; }}
1 0
- 对STM32官方库封装一:GPIO库
- 用GCC开发STM32入门一(使用官方库)
- STM32官方固件库代码解读--GPIO
- stm32学习笔记(一) GPIO
- STM32实验一:GPIO之流水灯
- STM32 -- 笔记一 -- CLK、GPIO、PWM
- STM32官方库文件分析及使用
- STM32 USB OTG官方库移植
- stm32官方库数据格式定义 uint16_t
- STM32使用官方库串口输出乱码
- STM32 GPIO
- STM32 GPIO
- STM32 GPIO
- STM32:GPIO
- stm32---gpio
- stm32--GPIO
- STM32--GPIO
- stm32 对GPIO口操作后 寄存器复位情况
- 关于tail -f 的报错file truncated的
- web2.o
- LeetCode OJ:Letter Combinations of a Phone Number
- 如何解决hadoop2.2一直处于安全模式
- freopen的使用
- 对STM32官方库封装一:GPIO库
- J2SE实战项目——信用卡管理系统
- oracle中 connect,resource 权限详解
- oracle的操作系统认证(connect as sysdba)登录方式
- Oracle用户、权限、角色管理
- oracle两种认证方式总结
- Cache高速缓存guava-libraries Cache
- 超好用的软件
- 制作java程序的安装包