用GPIO-流水灯-直接操作寄存器来点灯
eneral Purpose Input Output (通用输入/输出)简称为GPIO,或总线扩展器,人们利用工业标准I2C、SMBus或SPI接口简化了I/O口的扩展。当微控制器或芯片组没有足够的I/O端口,或当系统需要采用远端串行通信或控制时,GPIO产品能够提供额外的控制和监视功能。
分类:硬件/嵌入开发驱动开发/核心开发
每个GPIO端口可通过软件分别配置成输入或输出。Maxim的GPIO产品线包括8端口至28端口的GPIO,提供推挽式输出或漏极开路输出。提供微型3mm x 3mm QFN封装。
GPIO的优点(端口扩展器)
gpio
gpio
低功耗:GPIO具有更低的功率损耗(大约1μA,μC的工作电流则为100μA)。
集成IIC从机接口:GPIO内置IIC从机接口,即使在待机模式下也能够全速工作。
小封装:GPIO器件提供最小的封装尺寸 ― 3mm x 3mm QFN!
低成本:您不用为没有使用的功能买单。
快速上市:不需要编写额外的代码、文档,不需要任何维护工作。
灵活的灯光控制:内置多路高分辨率的PWM输出。
可预先确定响应时间:缩短或确定外部事件与中断之间的响应时间。
更好的灯光效果:匹配的电流输出确保均匀的显示亮度。
布线简单:仅需使用2条就可以组成IIC总线或3条组成SPI总线。
与ARM 的几组GPIO引脚,功能相似,GPxCON 控制引脚功能,GPxDAT用于读写引脚数据。另外,GPxUP用于确定是否使用上拉电阻。 x为A,B,,H/J,
GPAUP 没有上拉电阻。
main函数如下
#include "stm32f40x.h"
#include "bsp_led.h"
void Delay(__IO u32 nCount);
/**
* @brief 主函数
* @param 无
* @retval 无
*/
int main(void)
{
/* LED 端口初始化 */
LED_GPIO_Config();
/* 方法1,直接控制寄存器 */
while(1)
{
// ODR GPIOB
// 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
// 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (复位值)
// 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
GPIOB->ODR = 0XFFFE; //低电平,GPIOB0(LED0)灯亮
Delay(0x0FFFFF);
GPIOB->ODR = 0XFFFF; //高电平,GPIOB0(LED0)灯灭
// ODR GPIOF
// 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
// 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (复位值)
// 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1
GPIOF->ODR = 0XFF7F; //低电平,GPIOF7(LED1)灯亮
Delay(0x0FFFFF);
GPIOF->ODR = 0XFFFF; //高电平,GPIOF7(LED1)灯亮
// ODR GPIOF
// 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
// 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (复位值)
// 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1
GPIOF->ODR = 0XFEFF; //低电平,GPIOF8(LED2)灯亮
Delay(0x0FFFFF);
GPIOF->ODR = 0XFFFF; //高电平,GPIOF8(LED2)灯亮
}
}
void Delay(__IO uint32_t nCount) //简单的延时函数
{
for(; nCount != 0; nCount--);
}
用GPIO-流水灯-直接操作寄存器来点灯
eneral Purpose Input Output (通用输入/输出)简称为GPIO,或总线扩展器,人们利用工业标准I2C、SMBus或SPI接口简化了I/O口的扩展。当微控制器或芯片组没有足够的I/O端口,或当系统需要采用远端串行通信或控制时,GPIO产品能够提供额外的控制和监视功能。
分类:硬件/嵌入开发驱动开发/核心开发
每个GPIO端口可通过软件分别配置成输入或输出。Maxim的GPIO产品线包括8端口至28端口的GPIO,提供推挽式输出或漏极开路输出。提供微型3mm x 3mm QFN封装。
GPIO的优点(端口扩展器)
gpio
gpio
低功耗:GPIO具有更低的功率损耗(大约1μA,μC的工作电流则为100μA)。
集成IIC从机接口:GPIO内置IIC从机接口,即使在待机模式下也能够全速工作。
小封装:GPIO器件提供最小的封装尺寸 ― 3mm x 3mm QFN!
低成本:您不用为没有使用的功能买单。
快速上市:不需要编写额外的代码、文档,不需要任何维护工作。
灵活的灯光控制:内置多路高分辨率的PWM输出。
可预先确定响应时间:缩短或确定外部事件与中断之间的响应时间。
更好的灯光效果:匹配的电流输出确保均匀的显示亮度。
布线简单:仅需使用2条就可以组成IIC总线或3条组成SPI总线。
与ARM 的几组GPIO引脚,功能相似,GPxCON 控制引脚功能,GPxDAT用于读写引脚数据。另外,GPxUP用于确定是否使用上拉电阻。 x为A,B,,H/J,
GPAUP 没有上拉电阻。
main函数如下
#include "stm32f40x.h"
#include "bsp_led.h"
void Delay(__IO u32 nCount);
/**
* @brief 主函数
* @param 无
* @retval 无
*/
int main(void)
{
/* LED 端口初始化 */
LED_GPIO_Config();
/* 方法1,直接控制寄存器 */
while(1)
{
// ODR GPIOB
// 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
// 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (复位值)
// 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
GPIOB->ODR = 0XFFFE; //低电平,GPIOB0(LED0)灯亮
Delay(0x0FFFFF);
GPIOB->ODR = 0XFFFF; //高电平,GPIOB0(LED0)灯灭
// ODR GPIOF
// 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
// 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (复位值)
// 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1
GPIOF->ODR = 0XFF7F; //低电平,GPIOF7(LED1)灯亮
Delay(0x0FFFFF);
GPIOF->ODR = 0XFFFF; //高电平,GPIOF7(LED1)灯亮
// ODR GPIOF
// 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
// 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (复位值)
// 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1
GPIOF->ODR = 0XFEFF; //低电平,GPIOF8(LED2)灯亮
Delay(0x0FFFFF);
GPIOF->ODR = 0XFFFF; //高电平,GPIOF8(LED2)灯亮
}
}
void Delay(__IO uint32_t nCount) //简单的延时函数
{
for(; nCount != 0; nCount--);
}