专业的营销型网站最新报价,网站如何引入流量,房地产公司排行榜,欧美风格网站模版本文开发环境#xff1a; MCU型号#xff1a;STM32F051R8T6IDE环境#xff1a; MDK 5.18代码生成工具#xff1a;STM32CubeMx 5.0.1 本文内容#xff1a; 初始化IO口IO口的读和写 当我们安装好STM32CubeMx以及芯片对应的固件包之后#xff0c;就可以开始一个新的工程。… 本文开发环境 MCU型号STM32F051R8T6IDE环境 MDK 5.18代码生成工具STM32CubeMx 5.0.1 本文内容 初始化IO口IO口的读和写 当我们安装好STM32CubeMx以及芯片对应的固件包之后就可以开始一个新的工程。对于一个MCU来说IO口的读和写是简单的通常作为一个单片机裸机中外设开发的第一步。本文演示如同通过CubeMx来生成一个初始化IO口工程并实现IO口的读写。
IO口工程的建立
本文以初始化 PA0 和 PC9 为例其中PA0作为输入IO口PA9作为输出IO口分别演示IO的读和写操作。建立一个工程主要有以下几个操作
选择芯片初始化RCC选择系统时钟开启 SW 调试功能初始化外设生成工程编写用户代码
接着下来分别介绍这些步骤的具体操作。
选择芯片
建立工程的第一步有2种方式可以选择选择芯片和选择板子这里只介绍选择芯片的方式。 点击Start My Project from Mcu 下的 ACCESS TO MCU SELECTOR如下图所示 确定方式后你可以通过多种方法来确定一个芯片比如CoreSeries等等但是通过Part Number来确定是很便捷的。首先我们在Part Number的搜索框中输入STM32F051R8得到了该芯片系列接着在MCUs List列表中选择STM32F051RBTx如果点到 STM32F0DISCOVERY这样则变成通过选择板子而非选择芯片的方式来创建工程了步确定具体芯片。由于芯片型号的最后一个字母表示包装方式对生成代码没有影响所以这里用x来表示可以是任何值当然也包括本文的“6”。 当我们选中STM32F051R8Tx后MCU 列表上的简介窗口出现了该芯片的信息右上角的 Start Project也变成了有效按钮即可点击状态。如下图所示 点击Start Project就可以开始一个新的工程进入新界面
初始化RCC选择系统时钟
MCU有多种时钟源可以选择如外部高速时钟HSE外部低速时钟LSE还有内部时钟等。本文硬件平台已经接入一个8M的晶振。这里以外部高速时钟作为系统时钟首先展开System Core点击RCC在Mode栏的 High Speed ClockHES选项框选择Crystall/Ceramic Resonator如果你的板子没有外部晶振那么也可以使用内部时钟。其余的保持默认可以看到右侧芯片引脚PF0PF1已经变成绿色表示已经使用。如下图所示 现在我们只是使能了外部时钟接着我们进入Clock Configuration来配置系统的时钟源为外部时钟如下图所示 进入Clock Configuration可以看到系统默认使用的是内部时钟源如下图所示 这里我们以外部高速时钟为例具体配置如下图所示实心表示点选择 可以看到我们还配置了PLL的倍率绿框部分提高系统时钟至最高的48Mhz。至此我们便配置好系统的时钟源。
开启SW调试功能 初始化外设
配置好每一个工程都需要配置的系统时钟源我们便可以配置外设外设则根据用户所需来配置以本文为例我们回到 Pinout Configuration配置选项卡中展开System Core接着选择GPIO这样就可以开始配置在Pinout view窗口中图形化配置IO口了。如下图所示 本文以PC9作为输出IO口PA0作为输入IO口所以分别在点击PC9和PA0选择对应的模式如下图所示 当我们选择好IO口模式后可以发现 GPIO Mode and Configuration窗口中多了2个IO选项我们可以点击选择它们进行进一步的配置以PA0为例如下图所示 输入口的模式我们选择浮输入User Lable是用户自定义的因为我的板子PA0接了一个按键所以我命名为button。 PC9的配置也是同理这里输入我们选择了推挽输入如下图所示 至此我们就完成了IO口的初始化配置最后我们就可以生成工程了。
生成工程
选择 Project Manager 工程管理来生成工程需要的一些配置 如下图所示我想写入工程的名字存储的位置已经生成什么IDE的工程本文开发IDE为MDK5所以在Toolchain/IED中选择MDK-ARM V5这里需要你对应的IDE既可。具体如下图所示 之后我们配置好了工程点击右上角的GENEARTE CODE就可以生成一个工程了 等待工程生成 生成以后可以直接打开工程 这样便打开了一个工程展开Application/User进入main函数可看到工程已经生成一些代码
编写用户代码
当然由于我们以后可能会用工具继续生成代码那么不可避免的CubeMx会修改main.c或其他文件所以如果我们代码插入的地方不合适就会被覆盖掉在CubeMx工程中用户代码需要插入在 带 BEGIN 和 END 注释的区域之中这样CubeMx就可以识别到在此生成代码时候不会修改到这部分代码。 我们选择在 USER CODE BEGIN 3 和 USER CODE END 3中添加以下代码 if(HAL_GPIO_ReadPin(button_GPIO_Port, button_Pin)) //读取PA0口的值并判断{HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET); //值为非0拉低PA0}else{HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET); //值为0拉高PA0}}如下图所示 编译下载程序后可以发现LED灯亮了。当按下按键后LED暗。弹起按键后LED又恢复点亮状态这样我们就完成了一个简单的IO初始化工程接下来我们可以用STM32CubeMx来配置串口uartusart定时器TIMPWM外部中断EXIT等等。