STM32F10XX之应用笔记-GPIO设置
ST公司为STM32系列的芯片编写了固件库,给我们开发带来了很多方便;所以大家都觉得它好用,最重要的原因就是这了。但是要完全玩透它还是得去看看底层是怎么设置寄存器的,这对我们完成某个功能有更深刻的了解。
首先从设置GPIO开始,要使用一个IO口得有两个过程:一是使能IO口组的时钟;二是设置IO口的方向。牵扯到的寄存器有CCR_APBXENR,GPIOX_CRL,GPIOX_CRH,GPIOX_IDR,GPIOX_ODR,GPIOX_BSRR,GPIOX_BRR。ST公司已经把这些宏定义已经做好了,相应的名字对应的就是寄存器的名字。做过RAM9开发的都知道宏定义一边都是这样的:
#define REGXXXXX (*(volatile 数据类型*)(数据类型)0xXXXXXXXXXX))
但是呢,用STM32开发时这些在头文件里已经做好了(stm32f10x.h)。我就以GPIOA的Pin_0作为输出引脚为例:
库函数:
void GPOIA_CONFIG(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA的时钟
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
寄存器:
CCR->APB2ENR
GPIOA->CRLvoid GPOIA_CONFIG(void)
{
CCR->APB2ENR |=(1<2);//开启GPIOA的时钟
GPIOA->CRL &=0XFFFFFFF0;
GPIOA->CRL |=0X000000003;//Pin_0推挽输出
}
一看都会觉得寄存的简单;库函数更好读也更让别人理解;这就仁者见仁智者见智了,我自己还是更喜欢寄存器,因为保密性要好些(库函数只要是编过程的一眼就读懂了),当然是团队合作肯定要用库函数咯。
STM32F10XXGPIO设 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)