STM32的GPIO使用

发布者:Yuexiang666最新更新时间:2024-07-15 来源: elecfans关键字:STM32  GPIO使用  输出功能 手机看文章 扫描二维码
随时随地手机看文章

设置GPIO引脚的输出功能,将对应引脚拉高或拉低输出


初步认识STM32最新的HAL库的使用

用代码实现控制GPIO引脚输出产生周期出1s 占空比为50%的PWM波

示例详解

做实验用到的STM32F103C8T6最小系统板,如下图所示。使用STM32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。


最小系统板原理图:

新建并配置工程

在新弹出的界面中的搜索框中输入 “stm32f103c8” ,并双击右侧栏中列出的STM32F103C8

弹出如下图所示界面,至此工程创建完成。

接下来配置工程。

配置系统伏仿真调试接口, 在System Core 目录下单击SYS选项,将其中的Debug选项选为Serial Wire, 此时PA13 PA14引脚会被占用。

配置STM32 CUBEMX 工程。

配置系统时钟源,在System Core 目录下单击RCC选项,将其中的High Speed Clock( HSE )选项选为Crystal/ceramic resona…, 此时PD0 PD1引脚会被占用,配置图如下。

配置GPIO PA0引却为输出,在右侧图中单击PA0引脚 ,在出现的选项选框中选择GPIO_Output 选项,选完后在在System Core 目录下单击GPIO选项,在GPIO子项中单击列表中的PA0,可看查看到PA0的详细设置参数,也可以根据需要进行修改,在这里保持默认即可。

配置系统时钟树,将工程界面切换到Clock Configureation 界面,完成如下配置。

配置代码生成,工程界面切换到Project Manager 界面,在界面左侧单击Project项,将其设置成如下图所示( 设置工程路径在E:Stm32cubePrj目录,工程名为stm32_gpio, 开发环境为 MDK-ARM v5 )。

在界面左侧单击Code Generator项,将其设置成如下图所示。

只拷贝所需文件到工程,为每个接口生成独立的初始化头文件和源文件,将所有未使用的引脚设为模拟输入。

打开工程

生成代码,单击工程界面中”GENERATE TOOL” 开始生成代码,代码生成后弹出是否打开工程对话框,单击“Open Project”打开创建的工程。


在代码工程(MDK/keil)中的 main.c 中 man函数中如下红框中代码:

编译工程

烧录代码,在代码工程中单击“Options for Target” 图标,在弹出的窗口中选中“Debug”页,选择相应的烧录工具,本示例所用是jlink工具。

单击右侧“Setting”按钮,将Port 设为“SW”, 最大速度建议不要超过5M。

如果仿真调式工具接线过长,可以将最大速度设为100K,这样可以保证烧录成功。

选“flash Download”页,勾选“Reset and Run”,并确保其它内容如下图所示。

设置完上述设置后,便可进行下载操作,将调试仿真工具中的与最小系统板连接好,在工程中点Download 按钮,或按F8快捷键进入下载,下载完成后会出现如下图所示提示信息。

操作GPIO引脚实现周期1S占空为50%的PWM实验完成。

用示波器逻辑分析工具在PA0引脚可以看到如下图所示波形输出!!


关键字:STM32  GPIO使用  输出功能 引用地址:STM32的GPIO使用

上一篇:单片机开发中的内存溢出的状况
下一篇:STM32如何配置外部中断?STM32外部中断配置步骤

推荐阅读最新更新时间:2024-11-07 11:08

STM32单片机的调试接口硬件电路
如果要减小插座的数量,就用SWD模式的仿真,在这个模式下,如果用JLINK只要四根线就可以了,这四根线分别是:3.3V、GND、SWDIO、SWCLK 其中 STM32的JTMS/SWDIO接JTAG口的TMS; STM32的JTCK/SWCLK接JTAG口的TCK。 SWD PIN 1------3.3V PIN 4------GND PIN 7-------PA13(SWDIO) PIN 9-------PA14(SWCLK) 如果要用ULINK2,则再加多一条 NRST ,即5条。 这个接口你可自行定义,在使用时用 杜邦线跳接或做块转换接口板联接仿真器与目标板即可。
[单片机]
<font color='red'>STM32</font>单片机的调试接口硬件电路
Eclipse搭建stm32开发环境+jlink调试
一、新建工程: 点击File- New- C++ project 然后我们会发现下图的界面,在这个界面中有STM32等工程的现成选项,右侧还有该工程支持的编译链,如Cross Arm gcc,根据这个我们就可以判断前面的软件安装成功了。此时我们可以直接点击新建一个基于STM32模版的工程,也可以创建一个空的工程,然后自己配置工程结构,就像我们使用MDK一样。此处我们以创建空工程为例子。 点击Empty project,输入工程名和路径,Next。 选择编译链,由于我们安装的是GNU ARM的工具链,所以选择对应的,然后指定工具链的路径。 创建好了之后,我们就可以看到下图的效果了,可以看到,这个
[单片机]
Eclipse搭建<font color='red'>stm32</font>开发环境+jlink调试
STM32外部中断及定时器编程示例
简介:STM32外部中断及定时器编程示例 /*======================================================================================== *名 称: main.c *功 能: *入口 参数: *说 明: *范 例: *编者 时 间: *========================================================================================*/ #include stm32f10x.h #include 12864.h Er
[单片机]
STM32 LL库中断配置引脚外部中断的方式
中断原理图 很多情况可以产生中断,开发者可以在CubeMx中NVIC选单、通讯模块选单处配置。请自行探索;部分中断有关的内容在模块讲解时·将会提到。 ※启用中断后,注意在System Core- NVIC- Code Generation中勾选生成IRQ Handler和 Select for init Sequence Ordering。 ※生成的中断函数定义在stm32fxxx_it.h和stm32fxxx_it.c中,向函数中填要执行的代码即可。 对于外部中断的事件分配,多个引脚将被分配到中断事件(具体可以参考文档),若需要区分则须在中断程序内写判断。判断方式之后给到 配置引脚外部中断的方式: ①在引脚图上选中需
[单片机]
<font color='red'>STM32</font> LL库中断配置引脚外部中断的方式
STM32的USB例程修改步骤
以下是笔者将ST的Custom_HID例程修改为 自定义USB设备 例程时总结出来的,因为笔者也是刚刚学USB开发不久,某些方面理解错误在所难免,请各位大虾指正。 一、usb_desc.c文件 根据你程序使用的通信方式修改。usb_desc.h文件中定义要根据usb_desc.c文件中的数组的大小;ConfigDescriptor 下添加需要处理的端点;根据需要添加或删除报告描述符(主要用于HID)和CDC接口描述符(主要用于实现USB转串口)等。具体方法可以下载个 电脑圈圈 使用D12编写的例子。 二、Usb_conf.h文件: 1、修改需要处理那些中断 CNTR_CTRM 处理数据正确
[单片机]
STM32定时器产生不同频率的PWM
STM32产生PWM是非常的方便的,要需要简单的设置定时器,即刻产生! (1)使能定时器时钟:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); (2)定义相应的GPIO: /* PA2,3,4,5,6输出- Key_Up,Key_Down,Key_Left,Key_Right,Key_Ctrl */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU
[单片机]
基于STM32设计的指针式电子钟与日历
1. 项目简介 这是基于STM32设计的一个指针式电子钟+万年历小项目,采用3.5寸的LCD屏显示时钟,日历、温度、天气,支持触摸屏调整设置时间,设置闹钟,查看日历等等。整体项目主要是技术点就是LCD屏的图形绘制。比如: 时钟的时针绘制、分针、秒针、表盘、日历绘制等等。 时钟的时间是直接采用STM32本身的RTC时钟,室内的室温数据采用DS18B20温度传感器获取,STM32芯片的具体型号是STM32F103ZET6,只要是STM32F1系列的开发板,代码都是可以通用的 LCD显示屏采用的正点原子的3.5寸TFT显示屏,支持8080时序,自带触摸屏功能,触摸屏是电阻屏,驱动芯片是XPT2046,SPI接口,通信非常方便。
[单片机]
基于<font color='red'>STM32</font>设计的指针式电子钟与日历
STM32-----NVIC
NVIC——Nested Vectored Interrupt Controller(嵌套中断向量控制器) STM32有43个channel的settable的中断源:AIRC(Application Interrupt and Reset Register)寄存器中有用于指定优先级的4bits。这4个bits用于分配pre-emption优先级和sub优先级,在STM32的固件库中定义如下: //-------------------------------Preemption Priority Group ------------------------------------------------ #defin
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved