当前位置:首页 > 单片机 > 单片机
[导读]今天多学习几个模块,首先是蜂鸣器。板上所用的是无源蜂鸣器,可以用直流电压直接驱动。还有一种叫有源蜂鸣器,要使用频率的方波才能驱动。使用的蜂鸣器的驱动电压,典型值为5V,额定工作电流为30mA。STM32的GPIO管脚

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

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

BEEP.C

#include "beep.h"

void BEEP_Configuration(void)

{

GPIO_InitTypeDefGPIO_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 BEEPGPIO_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还行,最后是效果图。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭