您的位置 首页 国产IC

STM32F10XX之使用笔记-GPIO设置

STM32F10XX会根据封装不同而引脚数不同;36脚(A半B)48脚(AB)64脚(ABC)100脚(ABCDE)144脚(ABCDEFG);STM32F10XX最多就是有7组16位…

STM32F10XX会依据封装不同而引脚数不同;36脚(A 半B)48脚(A B) 64脚(ABC) 100脚(ABCDE) 144脚(ABCDEFG);STM32F10XX最多便是有7组16位的IO口;当然IO口越多能完结的功用就越多,能完彻底全发挥STM32F10XX一切外设功用的只要144脚封装。

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->CRL

void GPOIA_CONFIG(void)
{
CCR->APB2ENR |=(1<<2);//敞开GPIOA的时钟
GPIOA->CRL &=0XFFFFFFF0;
GPIOA->CRL |=0X000000003;//Pin_0推挽输出
}
一看都会觉得存放的简略;库函数更好读也更让他人了解;这就仁者见仁智者见智了,我自己仍是更喜爱存放器,由于保密性要好些(库函数只要是编进程的一眼就读懂了),当然是团队协作必定要用库函数咯。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/ic/274342.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部