一、stm32CubeMX GPIO点亮第一个LED灯

先把我的工程给出来

工程上传到了我的github上了,点此进入
我用的芯片型号是stm32f103c8t6

配置工程

打开stm32cubemx,选择芯片型号为stm32f103c8t6
在这里插入图片描述
此处可能需要科学上网
然后选择芯片型号,我用的是stm32f103c8t6

在这里插入图片描述左上方输入芯片型号,右下方会出现对应的窗口,或者直接在右下方翻也行。
双击右下方窗口

在这里插入图片描述
首先配置系统设置,我DEBUG用的是SW接口

在这里插入图片描述
然后配置时钟源为外部高速晶振(stm32有内部振荡器可以作为时钟源,但是系统频率达不到72M,在做一些低功耗的开发时可能会用内部时钟源,一般情况用外部的8M高速晶振作为时钟源,另外stm32还可以外界一个32.768K的低速晶振给RTC提供时钟)
在这里插入图片描述

然后配置时钟,这里我们直接配置到72M(stm32f103的系统频率最高72M,但是用内部时钟源时貌似不能配到72M,所以前一步要记着配置为外部时钟源)

在这里插入图片描述

然后配置IO
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述GPIO output level 为对应引脚的初始状态,可选择为高电平或低电平
GPIO mode为对应引脚的输出状态,可选择为推挽或者开漏
GPIO Pull-up/Pull-down为对应引脚的内部拉动选择,可选择为上拉下拉或者浮空(输出状态下这个设置是无效的)
Maximum output speed为引脚最大输出速度,可选择为low/medium/high
(I/O口输出模式下有三种输出速度可选(2MHz,10MHz,50MHz),这个速度是指I/O口驱动电路的响应速度;I/O管脚内部有多个响应不同的驱动电路,用户可以根据自己的需要选择合适的驱动电路。

  1. 对于串口来说,加入最大波特率为115200,这样只需要用2M的GPIO的引脚速度就可以了,省电噪音又小;
  2. 对于I2C接口,假如使用400 000波特率,若想把余量留大一些,2M的GPIO引脚速度或许是不够,这时可以选用10M的GPIO引脚速度;
  3. 对于SPI接口,假如使用18M或9M的波特率,用10M的GPIO口也不够用了,需要选择呢50M的GPIO引脚速度 ;
  4. GPIO口设置为输入时,输出驱动电路与端口是断开的,所以这时配置输出速度是无意义的;)
    在这里插入图片描述
    最终生成代码
    在这里插入图片描述
    注意工程名称不要出现中文
    点击GENERATE CODE 就会生成文件了
    在这里插入图片描述

打开工程文件

**在这里插入图片描述**
注意/* USER CODE BEGIN Init /与/ USER CODE END Init */为代码保护区,写在二者之外的程序会在cube重新生成代码时被擦除
这是我的main函数,实现间隔一秒闪烁


int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */
  

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
		HAL_Delay(1000);
    /* USER CODE END WHILE */
    
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

在这里插入图片描述
HAL_Delay为Hal库里定义的一个弱函数,
__weak void HAL_Delay(uint32_t Delay),参数单位为ms,是利用系统滴答定时器的较为精确的延时,但注意延时过程中系统处于非阻塞状态下,且默认系统定时器中断优先级最高。
在这里插入图片描述
Hal库里定义的GPIO操作主要有:
HAL_GPIO_ReadPin;读取某一特定引脚的电平;
HAL_GPIO_WritePin;将某特定引脚电平输出设置为高/低;
HAL_GPIO_TogglePin;翻转某一特定引脚的输出。

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值