stm32 GPIO 操作例程

来源:互联网 发布:叉叉助手类似软件 编辑:程序博客网 时间:2024/06/05 18:37
/* *@author : mingliang.lu *@date   : 2015年12月21日 22:10:29 *@e-mail : <mingllu@163.com> */

stm32 作为cortex-m3系列中一款应用较为广泛的处理器,其在诸多的应用场景中有着不错的性能体现,最近在Gokit的官网领取了一块以stm32f103c8t6为主控单元的Gokit2开发板,遂,顺手研究研究stm32的一些外设以及u-Cos操作系统。研究了linux回头来再看看这些轻量级操作系统,觉得轻量级的操作系统在Real Time OS一类中还是占据了不俗的地位。So,let’s begin …

1. 开发平台背景


    1.硬件开发平台:Gokit2开发板(基于stm32f103c8t6主控芯片)    2.软件开发平台:MDK-ARM keil v516    3.开发调试工具:j-link v9 + segger v4.90驱动  

2. GPIO操作事例


以点灯为主要示范,实现点亮一个led灯作为实际的操作实现。本次以GPIOB中的PB14作为控制led开关的引脚。程序代码以及注释如下:

    #include "..."//这里我省略了一些头文件的包含,只写出程序的主体部分,具体代码可以从我的github中clone下。    void led_gpio_init(void)    {            /*             *首先定义一个这样的GPIO结构体,说点题外话,基于CMSIS层驱动接口的stm32开发,             *针对每一类外设或系统通信接口,均实现了一个类似的结构体,             *你想初始化或者配置某个外设时候,你就去找对应的外设的结构体即可             */            GPIO_InitTypeDef GPIO_InitStructure;            /*然后,将RCC寄存器中,相应的外设的始终使能,即打开该GPIOB端口的时钟,让其工作*/            RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);            /* 配置时钟的输入输出方向,根据实际的要求,这里我们设置成推挽输出*/            GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;            GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;            /* 最后调用CMSIS驱动的GPIO 引脚初始化模块,来初始化这个GPIO端口*/            GPIO_Init(GPIOB, &GPIO_InitStructure);      }

上面的代码就实现了对stm32的外设之GPIO的简单设置,这样在通过对该GPIOB_Pin_14引脚写高写低就可以控制灯的闪烁。

0 0