单片机
返回首页

神舟IV学习笔记(三)蜂鸣器与串口1打印

2017-02-17 来源:eefocus

今天多学习几个模块,首先是蜂鸣器。板上所用的是无源蜂鸣器,可以用直流电压直接驱动。还有一种叫有源蜂鸣器,要使用频率的方波才能驱动。

使用的蜂鸣器的驱动电压,典型值为5V,额定工作电流为30mA。STM32的GPIO管脚绝大多数能承受5V的电压,但是承受的电流最多为25mA,还需要使用三极管将电流放大,并且采用了一个限流电阻。我们把与蜂鸣器的GPIO设置为推挽输出,当输出1时,蜂鸣器响。当输出0时蜂鸣器灭。下面是我封装的文件:

BEEP.C

#include 'beep.h'

void BEEP_Configuration(void)

{

  GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //打开时钟

  GPIO_InitStructure.GPIO_Pin =  BEEP ;

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;

  GPIO_Init(GPIOA, &GPIO_InitStructure);

}

BEEP.H

#ifndef __BEEP_H

#define __BEEP_H

#include 'stm32f10x_conf.h'

#define BEEP                    GPIO_Pin_3

#define BEEP_ON() GPIOA->BRR = BEEP

#define BEEP_OFF()       GPIOA->BSRR = BEEP

//#define BEEP_ON() GPIO_ResetBits(GPIOA, BEEP)

//#define BEEP_OFF() GPIO_SetBits(GPIOA, BEEP)

void BEEP_Configuration(void);

#endif

 

串口模块。串口是电脑常用的设备,虽然笔记本上没有串口,使用USB转串口线就相当有串口的功能。串口简单容易实现,常常用于程序的打印显示等等。串口属于串行通信协议,大体指的是在一个线上传递多位数据,像SPI/I2C/USB都属于串行通信协议。串口模式通常使用3根线:(1)地GND,(2)发送TXD,(3)接收RXD。编程的时候只需配置好波特率,常用的是9600,意思就是每秒发生9600bit,我们知道一个字节等于8个比特位,如果要采集卡要传输1M个unsigned char的数据,大约要二十多分钟。当然我们可以把波特率提高,STM32最高能支持4.5M/S,但是速度增加,传输的距离将速度,误码率会提高。

       软件编程的时候我们首先:打开相应功能的时钟,比如使用到串口一引脚的GPIOA时钟和串口一时钟USART1。然后我们对引脚和串口进行相应的配置。最后调用库函数写相应的功能。简单而言就是:时钟—配置—功能。STM32有一优势是,对于不同芯片有些功能对应的引脚是相同的。比如串口一,我发现大多数都是对于PA9和PA10的。在IAR环境中,如果要使用printf,需要进行如下的设置。好像IAR对puts不是很支持,打印字符用printf还行,最后是效果图。


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • 短波AM发射器电路设计图

  • 带有短路保护系统的5V直流稳压电源电路图

  • 如何调制IC555振荡器

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章