admin管理员组

文章数量:1564635

一、标准库(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不用接电源、对比度电位器,实物要接。其它 一样。

本文标签: 最小模块系统江科Protues