6-STM32最小系统板(江科大-模块补充-protues)

一、标准库(basic)

文件模板(三个文件夹):

1、最主要的函数是:

RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph,Functionalstate NewState);

RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph,Functionalstate NewState);

RCC_APB1eriphClockCmd(uint32_t RCC_APB1Periph,Functionalstate NewState);

(虽然很长但时钟配置别看错了字母了)

.h文件一般都是以下格式:

#ifndef __KEY_H

#define __KEY_H

void Key_Init(void);

uint8_t Key_GetNum(void);

#endif

2、添加文件路径,在这里面(图一)就用(图二)的方法。

3、特殊功用:STM32的 PA13/14/15 & PB3/4无法正常使用,PA13/14/15 & PB3/4默认配置为JTAG功能 。首先,STM32F10x系列的MCU复位后,PA13/14/15 & PB3/4默认配置为JTAG功能。有时我们为了充分利用MCU I/O口的资源,会把这些端口设置为普通I/O口。具体方法如下:

STM32的 PA13/14/15 & PB3/4无法正常使用_pb3按键配置完不管用-CSDN博客

3-2 LED闪烁:

  • 函数介绍:
  • GPIO_DeInit()调用这个函数之后,所指定的外设就会被复位&&GPIO_Init()一般初始化都是用这个&&GPIO_SetBits以下如图一都是对于GPIO的读写函数&&寻找引脚格式(如图二图三,再回溯定义就行)
  • GPIO_ResetBits(GPIOA,GPIO_Pin_0);就是给灯低电平那么灯就会亮,如果是GPIO_SetBits(GPIOA,GPIO_Pin_0)灯就会灭。

二、组建工程

按键/光敏传感器(LDR):

LED模块化,之后在头文件声明一下就行 (图一);按键:GPIO_ReadInputDataBit()就是读取电平函数(图二);光敏传感器(图三)如果是实际传感器,那么有光照时指示灯会灭,没有时会亮

灰色电平:proteus中引脚灰色,说明电平处于非高非低的状态,要么加个上拉电阻(比如80C51系列的一些芯片需要在P0口加上拉电阻),要么加个下拉电阻。试试-+

具体过程(细化):

关于IO口初始电平:

  • STM32中空的I/O管脚是高电平还是低电平取决于具体情况:IO端口复位后处于浮空状态,也就是其电平状态由外围电路决定。比如按键按下来就会让iO口检测到是高电平(图一),那就会把灯的电平拉低,那么灯就可以导通亮了;未按时时低电平,那么就不会亮。

  • 在没有任何操作的情况下,如果比如灯是采用推挽输出的模式,那么一般都会设置其初始状态为高电平(图二),这样和前面的VCC强灌不会有电平差,也就不会亮,除非后面有被拉低电平。

传感器一般都是用上拉模式,和按键一个道理,就是会改变它的电阻值,如果电阻值低到一定的范围电压就会高到一定程度就相当于按键按下时Io口就会检测到高电平一样。

TIP:

1.小工具:keilkill.bat是一个批处理文件,可以把工程编译产生的中间文件都给删除掉。主要占空间的都是listing和object两个文件夹,如果要分享给别人这个文件,可以先双击一下这个文件,这样就会从20M变成2M的内存空间了。

2.error:Undefined symbol assert_param (referred from misc.o).是因为没添加下面这个

USE_STDPERIPH_DRIVER

3、GPIOx->ODR=Portval;表示把数据写入ODR这个GPIO的寄存器

4、从引脚定义图,PA15、PB3、PB4是JTAG的三个y调试口,所以输出是没现象的 。

5.declaration may not appear after executable sta这种要选有C99的,如下图:

6.除非是带了void的,否则都需要一个返回return,无论是变量还是函数。

7.出现unknown type name uint8_t的提示,则需要加入#include "stdint.h"解决。

8.User\main.c(29): warning: #223-D: function "Beep_on" declared implicitly是很可能是头文件的预定义声明重复了。比如写了两个LED文件,一个是LED1.c,另一个是LED2.c。他们俩都是从LED.c移植过来的,然后头文件忘了修改

OLED

调试方式:

串口调试/显示屏调试:通过串口助手将信息发送到电脑端,使用串口助手显示调试信息。Keil:借助软件的调试模式,可使用单步运行,设置断点,查看寄存器。

SCL和SDA的两个引脚要初始化为开漏输出。

接法(软件置位):

Tip:1.十六进制是16位,Note: source file '.\Hardware\oled.c' - object file renamed from '.\oled.o' to '.\oled_1.o'.:

解决方案:

1、删除重复文件,确保.c文件在工程内不重复

2、关闭KEIL工程,并运行keilkill.bat将编译链接文件全部删除(点开bat即可)

3、打开工程进行编译即可

BEEP

有源蜂鸣器上面贴的是:remove seal after washing,要注意有分正负的,长是正的,短是负的;要接个三极管上去才够电流,如下:

stm32蜂鸣器和led报警程序 - 资料共享

蜂鸣器需要5V供电吗:

当蜂鸣器连上时,出现以下这个提示,烧录不进去:

解决第一个图的方法是:

LCD:

LCD1602(接法):

lm016l和lcd1602通用吗:编程一样。接线上,LM016L不用接电源、对比度电位器,实物要接。其它 一样。

### 设计STM32最小系统电路图 在Proteus中设计STM32最小系统的电路图涉及几个关键组件,这些组件对于确保微控制器正常工作至关重要。复位电路的设计尤其重要,因为它保证了系统能够在上电或遇到异常情况时恢复到可控状态[^1]。 #### 复位电路 为了使STM32能够可靠启动并运行,在其周围构建的硬件部分应当包含一个有效的复位机制。该机制通常由连接至NRST引脚的一个按钮和一些被动元件组成,比如电阻器和电容器。这种设置不仅有助于初始化过程中的重置操作,而且也为后续可能出现的问题提供了解决方案。 #### 高速外部振荡器 (HSE) 除了复位功能外,还需要考虑时钟源的选择。如果计划利用内部RC振荡器以外的速度,则应加入高速外部晶体振荡器(HSE),这通常是通过安装一颗8MHz或更高频率的石英晶振来完成,并将其两端分别接到相应的X1与X2管脚之上[^2]。 #### BOOT模式选择 另外,要注意的是BOOT0引脚的状态决定了设备是从闪存还是内置SRAM开始执行代码;一般情况下会保持低电平以默认加载用户应用程序。因此,在大多数应用场景下,建议将此引脚接地处理。 以下是简化版的STM32最小系统原理图: ```plaintext +-------------------+ | | | STM32Fxxx |-----> VDD -> +5V Power Supply | | GND -> Ground +--------+----------+ | | | NRST |----> Reset Button to GND with pull-up resistor | X1/X2 |----> 8 MHz Crystal Oscillator connected between these pins | BOOT0 |----> Pulled down to ground via a small value resistor (~10kΩ) ``` 上述描述涵盖了创建基本STM32最小系统所需的主要电气连接。当在Proteus环境中搭建此类模型时,可以省去实际物理电源模块的设计,因为软件本身已经模拟好了供电条件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值