原创 STM2

2011-2-15 14:08 1832 6 6 分类: EDA/ IP/ 设计与制造

STM32   固件库设置时钟

(1)在system_stm32f10x.c中

//#define SYSCLK_FREQ_HSE    HSE_Value
//#define SYSCLK_FREQ_20MHz  20000000
//#define SYSCLK_FREQ_36MHz  36000000
//#define SYSCLK_FREQ_48MHz  48000000
//#define SYSCLK_FREQ_56MHz  56000000
#define SYSCLK_FREQ_72MHz  72000000

这里设置。

(2)然后调用:SystemInit();

学习STM32笔记3 GPIO设置

/*******************************************************************************

设置GPIO基本参数

*******************************************************************************/

void GPIO_Configuration(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

//根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4| GPIO_Pin_5 ;

//设置的IO为pin4与pin5

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

/* GPIO_Speed 描述

GPIO_Speed_10MHz 最高输出速率10MHz

GPIO_Speed_2MHz 最高输出速率2MHz

GPIO_Speed_50MHz 最高输出速率50MHz

*/

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING ;

/*

GPIO_Speed 描述

GPIO_Mode_AIN 模拟输入

GPIO_Mode_IN_FLOATING 浮空输入

GPIO_Mode_IPD 下拉输入

GPIO_Mode_IPU 上拉输入

GPIO_Mode_Out_OD 开漏输出

GPIO_Mode_Out_PP 推挽输出

GPIO_Mode_AF_OD 复用开漏输出

GPIO_Mode_AF_PP 复用推挽输出通常有5种方式使用某个引脚功能,

它们的配置方式如下:

1)作为普通GPIO输入:

根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,

同时不要使能该引脚对应的所有复用功能模块。

2)作为普通GPIO输出:

根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引

脚对应的所有复用功能模块。

3)作为普通模拟输入:

配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有

复用功能模块。

4)作为内置外设的输入:

根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,

同时使能该引脚对应的某个复用功能模块。

5)作为内置外设的输出:

根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能

该引脚对应的所有复用功能模块。1、模拟输入模式下,是用于AD输入时输入模拟量,此时施密特触

发器输入关闭,施密特触发器输出为0.

2、下拉输入:打开内部下拉电阻

3、上拉输入:打开内部上拉电阻

4、浮空输入 :这个输入模式,输入电平必须由外部电路确定,

要根据具体电路,加外部上拉电阻或下拉电阻。

5、推挽输出:可以输出高,低电平,连接数字器件。推挽式输出输出电阻

小,带负载能力强。

6、开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要

上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强

(一般20ma以内).能驱动大电流和大电压。LED就使用这种模式

7、复用是指该引脚打开remap功能。*/

GPIO_Init(GPIOC, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource4);

EXTI_InitTypeDef EXTI_InitStructure;

EXTI_InitStructure.EXTI_Line=EXTI_Line4;

EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;

EXTI_InitStructure.EXTI_LineCmd=ENABLE;

EXTI_Init(&EXTI_InitStructure);

GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5);

EXTI_InitTypeDef EXTI_InitStructure;

EXTI_InitStructure.EXTI_Line=EXTI_Line5;

EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;

EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStructure);

}

/*GPIO常使用的几条函数

GPIO_ReadInputDataBit 读取指定端口管脚的输入

u8 ReadValue;

ReadValue = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7);

使用setbits 与resetbits 是比较简单,其实还是可以使用

其它函数。例如可以使用GPIO_WriteBit

GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_SET);

GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_RESET);对于好像流水灯呀这些一个整段IO,可以使用

GPIO_Write(GPIOA, 0x1101);GPIO_EXTILineConfig 选择GPIO管脚用作外部中断线路

GPIO_EXTILineConfig(GPIO_PortSource_GPIOB, GPIO_PinSource8);*/

 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条