历史上的今天
返回首页

历史上的今天

今天是:2024年11月04日(星期一)

正在发生

2021年11月04日 | STM32F103ZET6 —— GPIO

2021-11-04 来源:eefocus

STM32 的 GPIO 可以由软件配置成为几种不同的模式,每个I/O端口位可以自由编程,然而I/0端口寄存器必须按32位字被访问:


A. 芯片侧:


1. 输入:

image.png?imageView2/2/w/550

2. 输出:

image.png?imageView2/2/w/550

B. 硬件侧:


对应的单板,有两个GPIO连接到LED上:

使用的是 GPIO 的 Port G 的 Pin13 和 Pin14 脚


C. 代码侧:


配置上述两个 GPIO 工作需要的步骤如下:


1. 使能对应的 GPIO_G 的时钟


2. 配置 GPIO_G13/GPIO_G14 为通用推挽输出,配置口线翻转速度50M


3. 配置完成后,设置端口的输出为1/0即可控制 GPIO 的输出。


1. 时钟设置:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG , ENABLE); // 此处 RCC_APB2Periph_GPIOG 为 (0x01 << 8)

void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)

{

  /* Check the parameters */

  assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));

  assert_param(IS_FUNCTIONAL_STATE(NewState));

  if (NewState != DISABLE)

  {

    RCC->APB2ENR |= RCC_APB2Periph;

  }

  else

  {

    RCC->APB2ENR &= ~RCC_APB2Periph;

  }

}


2. 配置 GPIO_G13/GPIO_G14 为通用推挽输出,50M速度

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

 

GPIO_Init(GPIOG, &GPIO_InitStructure);

3.  配置输出:


STM32 配置 GPIO 的输出1/0,提供了多种方式,有端口直接写入1/0的寄存器(GPIOx_ODR),也有专门设置 1 值的寄存器(GPIOx_BSRR),同样有专用用于设置 0 值的寄存器(GPIOx_BRR)。可以随意使用:


#define LED1_ON GPIO_SetBits(GPIOG, GPIO_Pin_13);  

#define LED1_OFF GPIO_ResetBits(GPIOG, GPIO_Pin_13); 

 

#define LED2_ON GPIO_SetBits(GPIOG, GPIO_Pin_14);  

#define LED2_OFF GPIO_ResetBits(GPIOG, GPIO_Pin_14); 

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

{

  /* Check the parameters */

  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

  assert_param(IS_GPIO_PIN(GPIO_Pin));

  

  GPIOx->BSRR = GPIO_Pin;

}

void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

{

  /* Check the parameters */

  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

  assert_param(IS_GPIO_PIN(GPIO_Pin));

  

  GPIOx->BRR = GPIO_Pin;

}

推荐阅读

史海拾趣

Aromat Corp公司的发展小趣事

在电子行业快速发展的背景下,Aromat Corp始终坚持创新引领的发展理念。公司不断投入研发资源,推出了一系列具有创新性的电子产品。这些产品不仅满足了市场的多样化需求,还为公司带来了可观的利润增长。同时,Aromat Corp还注重知识产权保护,积极申请专利,保护公司的创新成果。

世纪金光(CENGOL)公司的发展小趣事

世纪金光(CENGOL)公司自创立之初,就立志要在半导体领域实现自主创新。经过无数次的实验与尝试,公司的研发团队成功攻克了高纯碳化硅粉料提纯技术。这一突破不仅使世纪金光在碳化硅材料领域取得了领先地位,更为后续产品的研发奠定了坚实基础。随着技术的不断完善,世纪金光成功推出了6英寸碳化硅单晶,并实现了量产,这一成就标志着公司在碳化硅材料领域取得了重要进展。

Digitron公司的发展小趣事

Digitron公司非常重视产品的品质和售后服务。公司建立了严格的质量控制体系,确保每一台出厂的设备都符合高标准的质量要求。同时,Digitron公司还提供全方位的售后服务,包括技术支持、维修保养等,确保客户在使用过程中得到及时、有效的帮助。这种对品质的坚持和对客户的关怀使Digitron公司在客户中树立了良好的口碑。

Bogen Communications Inc公司的发展小趣事

在电子行业的发展过程中,Bogen Communications Inc公司意识到单打独斗难以取得长久的成功。因此,公司积极寻求与其他企业和机构的合作,共同开发新技术、新产品。通过与合作伙伴的紧密合作,公司不仅获得了更多的资源和技术支持,还成功地将产品推向了更广阔的市场。

Feller US公司的发展小趣事

菲斯克(FSR.US)作为一家新兴的电动汽车制造商,自创立之初便面临着巨大的挑战。资金紧张是公司面临的首要问题,为了维持运营和推进研发,公司不得不频繁地寻求融资。在一次次的融资尝试中,菲斯克展现了其坚定的决心和创新的理念,虽然过程充满艰辛,但公司最终通过不断努力,成功获得了一笔重要的投资,为公司的发展奠定了坚实的基础。

Global Power Technologies Group公司的发展小趣事
选择合适的电阻、电容和三极管等元件,确保电路的稳定性和可靠性。

问答坊 | AI 解惑

推荐大家使用的图书

1.《TMS320X240x DSP原理及应用开发指南》 定价:38元 作者:赵世廉 书号:978-7-81124-066-5 配盘:光盘 丛书名:        出版日期:200707 开本:787×1092 1/16开 字数:614千字 本书以美国TI公司的TMS3 ...…

查看全部问答>

一款单片机实验板的原理图

一款单片机实验板原理图,有很多值得参考的地方。有刚学单片机的想自己动手做一块实验板的可以借鉴一下。…

查看全部问答>

转贴:阿南的ARM入门调试笔记

阿南的ARM入门调试笔记。一篇非常详细的入门教程 [ 本帖最后由 disheng 于 2009-7-20 14:28 编辑 ]…

查看全部问答>

阿牛哥系列故事夸父追日不是梦( 歪评太阳能篇)

六七月份,太阳能产业新闻特别多,有日本太阳能飞船遨游太空,也有瑞士太阳能飞机实现夜航。阿牛哥看看太阳能应用,以前最多的是太阳能灶,太阳能热水器和太阳能计算器,现在是太阳能发电。关键是要稳定,还有并网发电价格机制。阿牛哥读读古书, ...…

查看全部问答>

有关checksum的问题,不知道原因,还烦请高手指点一下,多谢了.

小弟不才,学习checksum算法的时候,对如下数据始终无法校验成功,麻烦各位大哥帮忙指点下。 对两段报文,用相同的机制,一个校验成功,一个失败,但这个两个包都是对的,我不知道原因,麻烦哥指点一下。多谢了。 static u8 packet1[] = { & ...…

查看全部问答>

stm8l101比较器的问题

                                 STM8L101比较器有没有内部参考电压,可不可以设置,最低能设置到多少还是只能用外部参考电压TSSOP-20没有外部参考 ...…

查看全部问答>

输出PWM

大家看看这个 #include void ClockInit() {         unsigned char i;         BCSCTL1&=~XT2OFF;                 ...…

查看全部问答>

高速PCB布线实践指南

高速PCB布线有很多方面的问题,关于这个题目已有人撰写了大量的文献。本文主要从实践的角度来探讨高速电路的布线问题。主要目的在于帮助新用户当设计高速电路PCB布线时对需要考虑的多种不同问题引起注意。 …

查看全部问答>

一个看似反相运算电路的正反馈运放电路

这几天在整理运放电路,发现自己忘得七七八八了。 其中还因为记错了,惹出不少麻烦。 比如,最基本的 反相运放电路。 看下图。 左边是 正常的负反馈 反相运放电路,右边 则是因为我无意记错,画出来的一个正反馈电路。…

查看全部问答>

FPGA内存控制

两个摄像头同时采集写入内存,然后一起到vga显示,但是图像的交错的,各位大神看看是什么原因呢,谢谢 Sdram_Control_4Port        u8        (        //      &nbs ...…

查看全部问答>