MM32F0020 GPIO驱动LED灯(MM32F0020 GPIO Toggle)
目录:
1.MM32F0020简介
2.MM32F0020系统时钟配置
3.MM32F0020的GPIO外设配置及其初始化
4.使用官网的Systick定时器做延时
5.MM32F0020 GPIO驱动LED灯
提要:
本实例学习MM32F0020的GPIO外设的配置,配置PA1、PA7、PA9、PA11为推挽输出模式驱动LED1~LED4灯翻转,每隔1s时间(使用官网的Systick延时)翻转1次LED灯的状态。
内容:
1、MM32F0020简介:
(1)MM32F0020微控制器是基于Arm Cortex-M0内核,最高工作频率可达48MHz;
(2)供电电压支持:2.0V - 5.5V;
(3)多达32KB的Flash,2KB的SRAM;
(4)1个I2C;
(5)2个UART;
(6)1个12位的ADC;
(7)1个I2C或I2S;
(8)1个高级定时,1个通用定时器,1个基本定时器.
2.MM32F0020系统时钟配置:
如下图1所示,1.MM32F0020可以使用外部HSE 8M时钟倍频到48M作为系统时钟,2.也可使用内部HSI 8M时钟倍频到48M作为系统时钟,二者选择其1,选择打开对应的时钟宏即可,本实例选择2开启HSI 8M倍频到48M时钟作为MM32F0020的系统时钟。
图1
3.MM32F0020的GPIO外设配置及其初始化:
MM32F0020每个外设都要其对应的时钟,在使用外设前应先配置使能其外设时钟,本实例使用GPIOA外设的PA1、PA7、PA9、PA11驱动LED灯每隔1s翻转1次做LED等的1s闪烁实验
具体配置步骤,及其初始化如下:
(1)使能GPIOA外设时钟;
(2)配置IO的管脚;
(3)配置GPIO的输出速度;
(4)配置IO管脚的工作模式;
(5)根据GPIOA配置的参数整体初始化GPIO各管脚的成员参数。
使用宏定义定义GPIOA的PA1、PA7、PA9、PA11驱动LED1~LED4代码如下,使用宏定义方便代码维护,需要更换GPIO端口或管脚时只需在宏定义中修改对应的端口GPIOx和GPIO_Pin_x即可
#define LED1_PORT GPIOA
#define LED1_PIN GPIO_Pin_1
#define LED2_PORT GPIOA
#define LED2_PIN GPIO_Pin_7
#define LED3_PORT GPIOA
#define LED3_PIN GPIO_Pin_9
#define LED4_PORT GPIOA
#define LED4_PIN GPIO_Pin_11 #define LED1_ON() GPIO_ResetBits(LED1_PORT,LED1_PIN)
#define LED1_OFF() GPIO_SetBits(LED1_PORT,LED1_PIN)
#define LED1_TOGGLE() (GPIO_ReadOutputDataBit(LED1_PORT,LED1_PIN))?(GPIO_ResetBits(LED1_PORT,LED1_PIN)):(GPIO_SetBits(LED1_PORT,LED1_PIN)) #define LED2_ON() GPIO_ResetBits(LED2_PORT,LED2_PIN)
#define LED2_OFF() GPIO_SetBits(LED2_PORT,LED2_PIN)
#define LED2_TOGGLE() (GPIO_ReadOutputDataBit(LED2_PORT,LED2_PIN))?(GPIO_ResetBits(LED2_PORT,LED2_PIN)):(GPIO_SetBits(LED2_PORT,LED2_PIN)) #define LED3_ON() GPIO_ResetBits(LED3_PORT,LED3_PIN)
#define LED3_OFF() GPIO_SetBits(LED3_PORT,LED3_PIN)
#define LED3_TOGGLE() (GPIO_ReadOutputDataBit(LED3_PORT,LED3_PIN))?(GPIO_ResetBits(LED3_PORT,LED3_PIN)):(GPIO_SetBits(LED3_PORT,LED3_PIN)) #define LED4_ON() GPIO_ResetBits(LED4_PORT,LED4_PIN)
#define LED4_OFF() GPIO_SetBits(LED4_PORT,LED4_PIN)
#define LED4_TOGGLE() (GPIO_ReadOutputDataBit(LED4_PORT,LED4_PIN))?(GPIO_ResetBits(LED4_PORT,LED4_PIN)):(GPIO_SetBits(LED4_PORT,LED4_PIN))
MM32F0020 GPIOA的外设配置及其IO的初始化,即PA1、PA7、PA9、PA11驱动LED1~LED4的初始化配置步骤如下代码所示:
void Bsp_LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
//Enable GPIOA Clock
RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE); //Init_struct member with its default value.
GPIO_StructInit(&GPIO_InitStruct);
//PA1:LED1,PA7:LED2,PA9:LED3,PA11:LED4
GPIO_InitStruct.GPIO_Pin = LED1_PIN | LED2_PIN | LED3_PIN | LED4_PIN;
//GPIO Speed
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
//Push-pull output
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
//Initializes the gpio peripheral according to the specified parameters in the init struct.
GPIO_Init(LED1_PORT, &GPIO_InitStruct); //OFF LED1~LED4
LED1_OFF();
LED2_OFF();
LED3_OFF();
LED4_OFF();
//ON LED1~LED4
LED1_ON();
LED2_ON();
LED3_ON();
LED4_ON();
}
4.使用官网的Systick定时器做延时:
在main函数中调用Systick定时器初始化函数,作为LED1~LED4翻转闪烁延时,只需调用DELAY_Init();即可。
5.MM32F0020 GPIO驱动LED灯:
如下代码所示,在main函数中调用Systick定时器初始化函数DELAY_Init和LED初始化函数Bsp_LED_Init,在while(1)主循环中调用之前宏定义的LED1_TOGGLE ~ LED4_TOGGLE翻转功能,
然后调用DELAY_Ms(1000);即1s延时函数,则实现PA1、PA7、PA9、PA11每隔1s驱动翻转1次LED1~LED4灯的状态,实现LED1~LED4灯的闪烁。
int main(void)
{
//Systick Init
DELAY_Init();
//LED GPIO Init
Bsp_LED_Init(); while(1)
{
//LED1~LED4 Toggle
LED1_TOGGLE();
LED2_TOGGLE();
LED3_TOGGLE();
LED4_TOGGLE();
DELAY_Ms(1000);
}
}
总结:
本实例学习MM32F0020的GPIO外设的配置,配置PA1、PA7、PA9、PA11为推挽输出模式驱动LED1~LED4灯翻转,每隔1s(使用官网的Systick延时)翻转1次LED灯的状态。
注意事项:
(1)配置系统时钟为HSI 8M倍频到48M或使用HSE 8M倍频到48M时钟(开启对应的时钟宏即可,其它时钟频率也可添加自定义时钟宏)
(2)使用外设时比如GPIOA外设,需使能GPIOA外设时钟。
MM32F0020 GPIO驱动LED灯(MM32F0020 GPIO Toggle)的更多相关文章
- MM32F0140 GPIO驱动LED灯(MM32F0140 GPIO)
目录: 1.MM32F0140简介 2.MM32F0140系统时钟配置 3.MM32F0140的GPIO外设配置及其初始化 4.使用官网的Systick定时器做延时 5.MM32F0140 GPIO驱 ...
- stm32开发笔记(三):stm32系列的GPIO基本功能之输出驱动LED灯、输入按键KEY以及Demo
前言 stm32系列是最常用的单片机之一,不同的版本对应除了引脚.外设.频率.容量等'不同之外,其开发的方法是一样的. 本章讲解使用GPIO引脚功能驱动LED灯和接收Key按钮输入. STM ...
- 灵动微电子ARM Cortex M0 MM32F0010 GPIO 的配置驱动LED灯
灵动微电子ARM Cortex M0 MM32F0010 GPIO的配置 目录: 1.前言 2.学习方法简要说明 3.要点提示 4.注意事项 5.MM32F0010系统时钟的配置 6.MM32F001 ...
- 树莓派 使用python来操作GPIO 控制LED灯
一.创建python驱动和控制GPIO 先新建一个文件夹用于放置脚本 mkdir python_gpio 进入文件夹内新建一个gpio_blink.py的脚本 cd python_gpio touch ...
- CC2530学习路线-基础实验-GPIO 控制LED灯亮灭(1)
目录 1.前期预备知识 1.1 新大陆ZigBee模块LED灯电路 1.2 CC2530相关寄存器 1.3 寄存器操作技巧 1.4 CPU空转延时 1.4 操作流程图 2.程序代码 The End 1 ...
- TMS320VC5509总线驱动LED灯
1. 重新建立的工程,需要添加宏定义才行 CHIP_5509 2. 驱动LED用的是74LVC573锁存器,LE高电平时,Q1=D0,LE低电平时,Q1=之前的状态,下面是数据总线 看下地址总线 看下 ...
- STM32之使用库函数驱动LED灯
一.熟悉GPIO结构体 以下这个结构体是我从官方手册中获取的: typedef struct { u16 GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMod ...
- 小结-stm32 驱动LED灯
使用位带操作,位带操作就是把每个比特膨胀成一个32位的字,当访问这些字的时候就访问这些比特位. http://www.cnblogs.com/xiaobo-Linux/ 然后,端口使能: //³õʼ ...
- 第7章 使用寄存器点亮LED灯
第7章 使用寄存器点亮LED灯 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...
随机推荐
- 集合框架-TreeSet集合-二叉树
1 package cn.itcast.p5.treeset.demo; 2 3 import java.util.Iterator; 4 import java.util.TreeSet; 5 6 ...
- 进程(守护进程--互斥锁--IPC机制--生产者模型--僵尸进程与孤儿进程--模拟抢票--消息队列)
目录 一:进程理论知识 1.理论知识 二:什么是进程? 三:僵尸进程与孤儿进程 1.僵尸进程 四:守护进程 1.什么是守护进程? 2.主进程创建守护进程 3.守护进程 五:互斥锁(模拟多人抢票) 1. ...
- 直接copy大于某一个时间小于某一个时间的文件--find进阶用法
find ./ -type f -newermt '2000-01-04 10:30:00' ! -newermt '2019-10-28 10:57:00' -exec cp -a {} /var/ ...
- python24day
内容回顾 命名空间 组合 一个类的对象是另一个类对象的属性 两个类之间有 什么有什么二点关系:例:班级有学生 学生和课程.圆形和圆环.班级和课程 计算器 from functools import r ...
- PyTorch 介绍 | TRANSFORMS
数据并不总是满足机器学习算法所需的格式.我们使用transform对数据进行一些操作,使得其能适用于训练. 所有的TorchVision数据集都有两个参数,用以接受包含transform逻辑的可调用项 ...
- c++14新特性
1.函数返回值类型推导 c++14对函数返回类型推导规则做了优化: auto func(int i) { //C++11编译非法,c++14支持auto返回值类型推导 return i; } int ...
- List去重复
HashSet hs = new HashSet(li1); //此时已经去掉重复的数据保存在hashset中 HashSet不能给cbx.datasource赋值,要转成list再赋值 List t ...
- python--003 数据类型
运算符 in "heilo" in "adfsdfsdfsdfsdfdsfdshellofsdfdsf" "li" in ["l ...
- 有手就行5——jenkins项目构建类型(pipeline流水线项目构建推荐)
有手就行5--jenkins项目构建类型(pipeline流水线项目构建推荐) Pipeline简介 1) 概念 Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立 ...
- 在MacOS安装puppeteer
安装node:升级:npm i npm 安装yarn:需要注意先把yarn的流程跑完,特别是package.json 安装puppeteer:yarn add puppeteer 安装完成以后需要重启 ...