资料介绍
void GPIO_DeInit(GPIO_TypeDef* GPIOx)
{
/* Reset the GPIO registers values */
if(GPIOx == GPIO0)
{
SCU_APBPeriphReset(__GPIO0,ENABLE);
SCU_APBPeriphReset(__GPIO0,DISABLE);
SCU->GPIOTYPE[0x00] = 0x0000 ;
SCU->GPIOOUT[0x00] = 0x0000;
SCU->GPIOIN[0x00] = 0x0000;
}
if(GPIOx == GPIO1)
{
SCU_APBPeriphReset(__GPIO1,ENABLE);
SCU_APBPeriphReset(__GPIO1,DISABLE);
SCU->GPIOTYPE[0x01] = 0x0000 ;
SCU->GPIOOUT[0x01] = 0x0000;
SCU->GPIOIN[0x01] = 0x0000;
}
if(GPIOx == GPIO2)
{
SCU_APBPeriphReset(__GPIO2,ENABLE);
SCU_APBPeriphReset(__GPIO2,DISABLE);
SCU->GPIOTYPE[0x02] = 0x0000 ;
SCU->GPIOOUT[0x02] = 0x0000;
SCU->GPIOIN[0x02] = 0x0000;
}
if(GPIOx == GPIO3)
{
SCU_APBPeriphReset(__GPIO3,ENABLE);
SCU_APBPeriphReset(__GPIO3,DISABLE);
SCU->GPIOTYPE[0x03] = 0x0000 ;
SCU->GPIOOUT[0x03] = 0x0000;
SCU->GPIOIN[0x03] = 0x0000;
}
if(GPIOx == GPIO4)
{
SCU_APBPeriphReset(__GPIO4,ENABLE);
SCU_APBPeriphReset(__GPIO4,DISABLE);
SCU->GPIOTYPE[0x04] = 0x0000 ;
SCU->GPIOOUT[0x04] = 0x0000;
SCU->GPIOIN[0x04] = 0x0000;
SCU->GPIOANA = 0x00;
}
if(GPIOx == GPIO5)
{
SCU_APBPeriphReset(__GPIO5,ENABLE);
SCU_APBPeriphReset(__GPIO5,DISABLE);
SCU->GPIOTYPE[0x05] = 0x0000 ;
SCU->GPIOOUT[0x05] = 0x0000;
SCU->GPIOIN[0x05] = 0x0000;
}
if(GPIOx == GPIO6)
{
SCU_APBPeriphReset(__GPIO6,ENABLE);
SCU_APBPeriphReset(__GPIO6,DISABLE);
SCU->GPIOTYPE[0x06] = 0x0000 ;
SCU->GPIOOUT[0x06] = 0x0000;
SCU->GPIOIN[0x06] = 0x0000;
}
if(GPIOx == GPIO7)
{
SCU_APBPeriphReset(__GPIO7,ENABLE);
SCU_APBPeriphReset(__GPIO7,DISABLE);
SCU->GPIOOUT[0x07] = 0xAAAA;
SCU->GPIOOUT[0x07] = 0x0000;
SCU->GPIOIN[0x07] = 0x0000;
}
if(GPIOx == GPIO8)
{
SCU_APBPeriphReset(__GPIO8,ENABLE);
SCU_APBPeriphReset(__GPIO8,DISABLE);
SCU->GPIOEMI = 0x00;
}
if(GPIOx == GPIO9)
{
SCU_APBPeriphReset(__GPIO9,ENABLE);
SCU_APBPeriphReset(__GPIO9,DISABLE);
SCU->GPIOEMI = 0x00;
}
}
/*******************************************************************************
* Function Name : GPIO_Init
* Description : Initializes the GPIOx peripheral according to the specified
* parameters in the GPIO_InitStruct .
* Input :- GPIOx: where x can be (0..9) to select the GPIO peripheral.
* - GPIO_InitStruct: pointer to a GPIO_InitTypeDef structure that
* contains the configuration information for the specified GPIO
* peripheral.
* Output : None
* Return : None
*******************************************************************************/
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
{
/* Select pin direction */
u8 PinNumber = 0;
u8 Counter = 0;
u8 GPIO_Number = 0;
GPIO_Number = GPIO_GetGPIONumber(GPIOx);
if(GPIO_InitStruct->GPIO_Direction == GPIO_PinOutput)
{
GPIOx->DDR |= GPIO_InitStruct->GPIO_Pin;
}
else
{
GPIOx->DDR &= ~GPIO_InitStruct->GPIO_Pin;
}
for (Counter = 0; Counter < 8;Counter++)
{
/*Search pin number*/
PinNumber = (GPIO_InitStruct->GPIO_Pin & (1 <
{
/*Output ALternate 0*/
SCU->GPIOOUT[GPIO_Number] &= ~(0x3 <<(Counter *2));
if(GPIO_InitStruct->GPIO_Alternate == GPIO_OutputAlt1)
{
/*Output ALternate 1*/
SCU->GPIOOUT[GPIO_Number] |= 1 << (Counter *2);
}
if(GPIO_InitStruct->GPIO_Alternate == GPIO_OutputAlt2)
{
/*Output ALternate 2*/
SCU->GPIOOUT[GPIO_Number] |= 0x2 << (Counter *2);
}
if(GPIO_InitStruct->GPIO_Alternate == GPIO_OutputAlt3)
{
/*Output ALternate 3*/
SCU->GPIOOUT[GPIO_Number] |= 0x3 << (Counter *2);
}
/*Type configuration: PushPull or Open Collector*/
SCU->GPIOTYPE[GPIO_Number] &= ~(0x1 << Counter) ;
if(GPIO_InitStruct->GPIO_Type == GPIO_Type_OpenCollector)
{
/*Open Drain configuration*/
SCU->GPIOTYPE[GPIO_Number] |= 0x1 << Counter;
}
/*IP Connected disable*/
SCU->GPIOIN[GPIO_Number] &= ~(0x1 << Counter) ;
if(GPIO_InitStruct->GPIO_IPConnected == GPIO_IPConnected_Enable)
{
/*IP Connected enable*/
SCU->GPIOIN[GPIO_Number] |= 0x1 << Counter;
}
}
}
}
- 窗口看门狗是什么?与独立看门狗有啥区别?
- STM32:独立看门狗、窗口看门狗的配置
- arduino看门狗的使用
- arduino看门狗
- MCU独立看门狗与窗口看门狗的区别
- STM32 ADC模拟看门狗及其应用
- 单片机看门狗有两种:分别为独立看门狗和窗口看门狗,它们有什么区别?资料下载
- 看门狗应用的keil程序和电路图免费下载 16次下载
- MSP430的看门狗使用学习资料总结
- ZigBee看门狗定时器的详细介绍和应用程序免费下载
- 看门狗(WatchDog 18次下载
- Arduino 看门狗 16次下载
- STM32_独立看门狗程序 25次下载
- Freescale Semiconductor看门狗程序 5次下载
- 基于STR710的看门狗程序 47次下载
- 什么是模拟看门狗?模拟看门狗有什么用处? 1406次阅读
- MCU如何集成看门狗的功能 1423次阅读
- 独立看门狗功能描述 1957次阅读
- STM32中的独立看门狗和窗口看门狗 1211次阅读
- STM32中的独立看门狗和窗口看门狗 1878次阅读
- 看门狗电路基本技巧 7409次阅读
- STM32单片机中的独立看门狗与窗口看门狗有哪些不同之处 3317次阅读
- 什么是看门狗定时器?为何看门狗定时器如此重要? 2.3w次阅读
- PIC单片机之看门狗_看门狗定时器工作原理 7845次阅读
- 看门狗定时器防止溢出复位程序 4582次阅读
- STM32看门狗配置(独立看门狗IWDG和窗口看门狗WWDG) 8286次阅读
- 看门狗定时器的作用 6553次阅读
- 看门狗喂狗时间及程序 1.7w次阅读
- 看门狗定时器的设计、工作原理及看门狗定时器的操作 7480次阅读
- stm32看门狗时间计算 独立看门狗和窗口看门狗的特性是什么 8659次阅读
下载排行
本周
- 1TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 2开关电源基础知识
- 5.73 MB | 6次下载 | 免费
- 3100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 4嵌入式linux-聊天程序设计
- 0.60 MB | 3次下载 | 免费
- 5基于FPGA的光纤通信系统的设计与实现
- 0.61 MB | 2次下载 | 免费
- 651单片机窗帘控制器仿真程序
- 1.93 MB | 2次下载 | 免费
- 751单片机大棚环境控制器仿真程序
- 1.10 MB | 2次下载 | 免费
- 8基于51单片机的RGB调色灯程序仿真
- 0.86 MB | 2次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33564次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6653次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537796次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191185次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多