【STM32入门】STM32实战

001–C8T6代码移植到CET6

  1. 修改启动文件
  • 将C8T6的启动文件改为CET6的(即中等容量md.s改为hd.s)
  • 我的hd.s文件在D:\keil5MDK\destination\Packs\Keil\STM32F1xx_DFP\2.4.0\Boards\Keil\MCBSTM32E\Blinky\RTE\Device\STM32F103ZE\startup_stm32f10x_hd.s
    在这里插入图片描述
    2.修改魔术棒
    在这里插入图片描述
  1. 下载器

002–LED闪灯

函数GPIO_SetBits

设定指定的数据端口位为高电平
在这里插入图片描述
STM32中的延时函数使用的是系统的嘀嗒计时器计时

GPIO_WriteBit(LEDPORT, LED1,Bit_SET); //LED1接口输出高电平1 LED1是PC13
delay_ms(300);
		
GPIO_WriteBit(LEDPORT, LED1,Bit_RESET); //LED1接口输出低电平0
delay_s(1);

函数GPIO_ResetBits

清除指定的数据端口位为低电平
在这里插入图片描述

GPIO_RestBits(GPIOx,GPIO_Pin_x);

函数GPIO_WriteBit

设置或者清除指定的数据端口位
在这里插入图片描述

函数GPIO_Write

向指定GPIO数据端口写入数据

  • 0X 16进制;0 8进制
    在这里插入图片描述

003–按键控制LED(带FLASH)

  • FLASH_W(FLASH_START_ADDR,a);写入的a必须是16位的,所以u16 a=0;
  • 写入的地址不能与程序冲突。写入的程序从第0页开始,为了不影响程序运行,写入的起始页应选择靠后的页数
#include "stm32f10x.h" //STM32头文件
#include "sys.h"
#include "delay.h"
#include "led.h"
#include "key.h" 

#include "flash.h" 

#define FLASH_START_ADDR  0x0801f000	  //写入的起始地址
void KEY_judge(void);//函数的声明

u16 a; //定义变量
int main (void){//主程序
	
	//初始化程序
	RCC_Configuration(); //时钟设置
	LED_Init();//LED初始化
	KEY_Init();//按键初始化

    a = FLASH_R(FLASH_START_ADDR);//从指定页的地址读FLASH
	KEY_judge();
		
	//主循环
	while(1){

		//示例4:有锁存	
		if(!GPIO_ReadInputDataBit(KEYPORT,KEY2)){ //读按键接口的电平
			delay_ms(20); //延时20ms去抖动
			if(!GPIO_ReadInputDataBit(KEYPORT,KEY2))
			{ //读按键接口的电平
				//在2个LED上显示二进制加法
					a++; //变量加1

				KEY_judge();
				
				FLASH_W(FLASH_START_ADDR,a); //从指定页的地址写入FLASH

				while(!GPIO_ReadInputDataBit(KEYPORT,KEY2)); //等待按键松开 
			}
		}
	}
}
void KEY_judge(void)
{
	if(a>3)
		  a=1;
    if(a==1)
		  GPIO_Write(LEDPORT,0X4);
	else if(a==2)
			GPIO_Write(LEDPORT,0X8);
	else if(a==3)
		  GPIO_Write(LEDPORT,0XC);
}

004–蜂鸣器驱动程序

两种蜂鸣器从外观上看几乎没有区别,要通过型号分辨

有源蜂鸣器

  • 内置频率发生电路
  • 通电就能发出声音
  • 声音频率固定
  • 成本较高

无源蜂鸣器

  • 内部没有发生电路
  • 需要外部给予频率
  • 可产生不同频率声音
  • 成本低
  • 修改延时时长可修改声音频率,即音调,时间越短音调越高。经典提示音:1KHz声音,每秒1000个周期,即每个周期1000us。

三极管

  • B到E箭头方向有小电流时,则C到E会有大电流。即NPN三极管的基极为高电平时三极管导通
  • PNP三极管的基极为低电平时三极管导通。
在这里插入代码片

005–MIDI音乐播放程序

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值