学习目标STM32F103C8T6芯片核心板简介搭建自来水灯电路原理图修改项目模板代码以达到显示效果,显示信息,获取建议的建议,阅读背景网友建议做自来水灯,刚发现我已经之前购买的STM32F103C8T6核心板现在已经制造出水灯,恰到好处地了解如何实现STM32 GPIO输出,该输出将在将来用于驱动蜂鸣器和继电器。
水灯等效于“ Hello World”灯。
用计算机语言。
再次执行并意识到这一点,您将基本开始。
学习目标:STM32F103C8T6最小系统板。
使用面包板构建水灯电路。
将STM32F103RCT6项目模板修改为STM32F103C8T6项目模板。
熟悉将STM32微控制器GPIO用作输出。
STM32F103C8T6芯片简介根据STM32& STM8产品模型命名规则,对单片机最小系统的详细说明。
可以看出,在STM32F103C8T6的命名中:STM32代表STM32系列,32位MCU; STM32代表STM32系列。
F代表产品类型为基本类型; 103表示特定功能为STM32基本类型; C表示引脚数为48和49。
8表示存储容量为64KB; T表示包装为QFP; 6表示温度范围是-40至+ 85°C。
从核心板的示意图中,我们可以知道:有两种方法可以为板供电:通过U3 USB-micro接口提供5V电源,然后通过板载LDO芯片转换为VCC3V3。
通过P2接口,即SWD下载接口中的VCC3V3。
核心板的电源。
核心板上有两个LED,其中一个是电源指示灯PWR,另一个LED连接到PC13引脚,当PC13设置为高电平时,LED熄灭。
当PC13设置为低电平时,LED点亮;核心板上的跳线用于选择启动模式。
为了使程序将主闪存用作引导区,我们需要将BOOT0设为低电平,将BOOT1设为随机值。
此引导模式是最常用的用户FLASH引导,这是默认引导模式;核心板上的按钮是“ RESET”按钮; P2接口是对应于SWD下载模式的管脚接口;建立水灯电路以准备组件。
注意:电阻为2K,用作限流器。
LED应注意正负极,并直接插入发光二极管。
长针是正极,短针是正极。
它是负极;如果引脚已被切割且长度相同,请检查发光二极管体内的金属极的尺寸。
较小的金属极为正极,较大的金属极为负极。
建立电路。
根据以下原理图构建电路。
建立效果图。
修改项目模板。
在基于STM32固件库建立MDK5项目的基础上,将STM32F103RCT6项目模板修改为STM32F103C8T6项目模板。
修改点:替换启动文件,将startup_stm32f10x_hd.s替换为startup_stm32f10x_md.s,startup_stm32f10x_md.s是中等容量产品使用的启动文件,对应的FLASH大小范围为:64K≤FLASH≤128K。
修改全局宏定义,并将STM32F10X_HD修改为STM32F10X_MD。
更改使用的芯片型号并设置下载的闪存容量。
注意:在互联网上据说STM32F103C8T6和STM32F103CBT6是在同一晶片上制造的,但是在测试时,仅测试手册中提供的参数范围内的内容,这意味着STM32F103C8T6也是128k Flash,但仅经过测试之前的64k,然后用STM32F103C8T6标记(当然,C8T6的ID写在里面);因此,当我们添加Flash时,我们只能找到128K STM32F103,而找不到64K Flash。
设置PA5,PA6,PA7输出的代码GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA,& GPIO_InitStructure);将GPIO初始化为高电平,当高电平时,LED熄灭GPIO_SetBits(GPIOA,GPIO_Pin_5); GPIO_SetBits(GPIOA,GPIO_Pin_6); GPIO_SetBits(GPIOA,GPIO_Pin_7);行车灯代码的具体实现包括“ stm32f10x.h” void Delay(u32 count){u32 i = 0; for(; i& lt; count; i ++);} int main(void){GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); GPIO_InitStructure |。
GPIO_Pin_7 | GPIO_Pin_7 | GPIO_Pin_7 | GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPI O_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA,& GPIO_InitStructure); GPIO_SetBits(GPIOA,GPIO_Pin