STM32入门一(点亮LED)

STM32 HELLO,WORLD(点亮LED)
1:环境
STM32CUBE IDE 用这个图省事(keil5也不错)
STM32F103C8T6 64KFLASH 最小核心板(10块左右)
ST-LINKV2 (5块左右) 也可以选择 JLINK(比较贵,不推荐) 安装驱动就好
STM32 ST-LINK Utility 烧录工具(单独可以BIN HEX 烧录到flash中)–可以不安装
2:创建项目
1>选择微控制器/微处理器 这里 F103C8T6(微控制器)
2>特色,结构图,文档,手册等
3>选择具体型号 ,这里有2中,还有 C8T6TR
在这里插入图片描述

2:配置项目 (A-Z) PINOUT&CONFIGURATION
RCC 时钟设置 选择Crystal/Ceramic Resonator 精确度高,所以选择它
在用cube配置时钟时,有下面三个选项
Disable(禁用)
BYPASS Clock Source(旁路时钟源)
Crystal/Ceramic Resonator(晶体/陶瓷晶振)
在这里插入图片描述
SYS 调试模式 因为用的是ST-LINK 所以选择 Serial Wire
看手册
Serial Wire模式下需要PA13和PA14这2个引脚
JTAG(4 pins)模式下需要PB3,PA13,PA14,PA15这4个引脚
JTAG(5 pins)模式下需要PB3,PB4,PA13,PA14,PA15这5个引脚
Trace Asynchronous SW模式下需要PB3,PA13,PA14这3个引脚

在这里插入图片描述
在这里插入图片描述

F103C8T6 只需要接 SWCLK SWDIO GND 3.3
根据C8t6的四个口,一一对应即可 (网上一堆,这里直接跳过)
在这里插入图片描述
时钟 这里暂时先用 Systick(系统的) TIM1-TIME4 后面有时间再说
在这里插入图片描述
GPIO
先看电路图
在这里插入图片描述
设置 PC13 位 GPIO_ouput 通用输出
GPIO(General Purpose Input/Output)
在这里插入图片描述
在这里插入图片描述
配置参数 (可以参考中文手册)
1)GPIO output level:只有当引脚设置为“GPIO output”时才需要设置
High:GPIO输出初始化为高电平
Low:GPIO输出初始化为低电平
2)GPIO mode
Output Push Pull:推挽输出,能输出高低电平,且高低电平都有驱动能力。以PC13引脚为例,若需要通过其控制LED灯,则该引脚应配置为“Output Push Pull”模式,对应标准库函数中的“GPIO_Mode_Out_PP”
Output Open Drain:开漏输出,只能输出低电平,需要借助外部上拉电阻才能输出高电平,对应标准库函数中的“GPIO_Mode_Out_OD”
Analog mode:模拟输入,ADC采样信号输入引脚的配置模式,对应标准库函数中的“GPIO_Mode_AIN”
Alternate Function Push Pull:推挽式复用功能,对应标准库函数中的“GPIO_Mode_AF_PP”
Input mode:输入模式,配合No pull-up/pull-down可形成GPIO_Mpde_IN_FLOATING、GPIO_Mode_IPD、GPIO_Mode_IPU等不同工作模式
3)GPIO Pull-up/Pul-down
No pull-up/pull-down:无内部上拉或下拉
Pull-up:内部上拉
Pull-down:内部下拉
4)Maximum output speed
Low:低速,对应标准库函数中的“GPIO_Speed_2MHz”
Medium:中速,对应标准库函数中的“GPIO_Speed_10MHz”
High:高速,对应标准库函数中的“GPIO_Speed_50MHz”
5)User Label:用户标签,可以按照需要给引脚命名

3: CLOCK Configuration
72MHZ sysclock 也配置为 72MHZ
在这里插入图片描述
4:Project manager
勾选 每个外设初始化时 产生 一对 C/H 文件,为了方便理解
在这里插入图片描述
5:tools
估下功耗
在这里插入图片描述
保存,进入编码模式

6:code

void Delay_ms(uint32_t xus){
	uint32_t temp;
	//RCC_CLOCKTYPE_SYSCLK
	  //SysTick->LOAD = 72000000/1000*xus;
	// uint32_t  ms = 72000000/1000 ;
	//系统时钟为 72MHZ(看 CLOCK Configuration) 就是 
	//1秒  = 72 000 000
	//1ms =  72000 000 /1000 =72000
	//1us = 72000 /1000 = 72
	 SysTick->LOAD = 72000*xus-1;//72000000/1000/72*xus-1;
	  SysTick->VAL=0X00;//清空计数�??
	  SysTick->CTRL=SysTick_CTRL_ENABLE_Msk ;//0X01;//使能,减到零是无动作,采用外部时钟源
	//  SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
	  do
	  {
	    temp=SysTick->CTRL;//读取当前倒计数�??
	  }while((temp&0x01)&&(!(temp&(1<<16))));//等待时间到达
	  SysTick->CTRL=0x00; //关闭计数�??
	  SysTick->VAL =0X00; //清空计数�??
}
	  HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET);//GPIO_PIN_RESET   、、点亮
	  Delay_ms(1000);
	  HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);//GPIO_PIN_SET  、、灭
	  Delay_ms(1000*5);

位置如下:
在这里插入图片描述
7:测试运行
在这里插入图片描述
在这里插入图片描述
注意
ELF 太大,Flash 才64K ,所以最好转为bin/HEX 这样方便调好的程序可以单独烧录到小flash中,
烧录工具
在这里插入图片描述在这里插入图片描述

8:如果觉得有用 请点个赞 加个收藏
后续继续讲使用OLED屏 调用温度计
先把DEMO工程

  • 30
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值