IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> C语言STM32流水灯依此闪烁 -> 正文阅读

[嵌入式]C语言STM32流水灯依此闪烁

目录

一、实验初始化

1.地址映射和寄存器映射

1.1 总线基地址

1.2 外设基地址

1.3?外设寄存器地址?

1.4接线

?1.5 程序下载

?二、用C语言寄存器实现流水灯

?2.1 工程文件

2.1.1 main.c

2.1.2加入设备

?2.2 编译生成hex文件

2.4 实验结果

三、心得

?四、参考文献


一、实验初始化

1.地址映射和寄存器映射



1.1 总线基地址

总线名称总线基地址相对外设基地址的偏移
APB10x4000 00000x0
APB20x4001 00000x0001 0000
AHB0x4001 80000x0001 8000

1.2 外设基地址

外设名称?? ?外设基地址?? ?相对 APB2 总线的地址偏移
GPIOA?? ?0x4001 0800?? ?0x0000 0800
GPIOB?? ?0x4001 0C00?? ?0x0000 0C00
GPIOC?? ?0x4001 1000?? ?0x0000 1000
GPIOD?? ?0x4001 1400?? ?0x0000 1400
GPIOE?? ?0x4001 1800?? ?0x0000 1800
GPIOF?? ?0x4001 1C00?? ?0x0000 1C00
GPIOG?? ?0x4001 2000?? ?0x0000 2000

1.3?外设寄存器地址?

本文要用到GPIOA,GPIOB,GPIOC。表格是通过查表得出,更多的可以根据大哥的博客看

?STM32从地址到寄存器_geekYatao-CSDN博客_stm32寄存器地址

STM32寄存器的简介、地址查找,与直接操作寄存器_geekYatao-CSDN博客_stm32寄存器

寄存器名称寄存器地址相对GPIOA基址的偏移
GPIOA_CRL0x4001 08000x00
GPIOA_CRH0x4001 08040x04
GPIOA_IDR?0x4001 08080x08
GPIOA_ODR0x4001 080C0x0C
GPIOA_BSRR0x4001 08100x10
GPIOA_BRR0x4001 08140x14
GPIOA_LCKR0x4001 08180x18

1.4接线

1.4.1 将串口USB转TTL线与stm32核心板连接如图所示

?1.4.2 并且要设.BOOT0 与 BOOT1 配置启动方式。?


BOOT1=x?? ?BOOT0=0?? ?从用户闪存启动,这是正常的工作模式。?
BOOT1=0?? ?BOOT0=1?? ?(ISP方式)从系统存储器启动,这种模式启动的程序功能由厂家设置。
BOOT1=1?? ?BOOT0=1?? ?从内置SRAM启动,这种模式可以用于调试.

如下图箭头所示

?1.5 程序下载

?烧录文件的时候要按一下reset。如下图

?二、用C语言寄存器实现流水灯

?2.1 工程文件

2.1.1 main.c

#define RCC_AP2ENR	*((unsigned volatile int*)0x40021018)
	//----------------GPIOA配置寄存器 ------------------------
#define GPIOA_CRH	*((unsigned volatile int*)0x40010804)
#define	GPIOA_ORD	*((unsigned volatile int*)0x4001080C)
//----------------GPIOB配置寄存器 ------------------------
#define GPIOB_CRL	*((unsigned volatile int*)0x40010C00)
#define	GPIOB_ORD	*((unsigned volatile int*)0x40010C0C)
//----------------GPIOC配置寄存器 ------------------------
#define GPIOC_CRH	*((unsigned volatile int*)0x40011004)
#define	GPIOC_ORD	*((unsigned volatile int*)0x4001100C)
//-------------------简单的延时函数-----------------------
void  Delay_ms( volatile  unsigned  int  t)
{
     unsigned  int  i;
     while(t--)
         for (i=0;i<800;i++);
}
//------------------------主函数--------------------------
int main()
{
	int j=100;
	RCC_AP2ENR|=1<<2;			//APB2-GPIOA外设时钟使能
	RCC_AP2ENR|=1<<3;			//APB2-GPIOB外设时钟使能	
	RCC_AP2ENR|=1<<4;			//APB2-GPIOC外设时钟使能
	//这两行代码可以合为 RCC_APB2ENR|=1<<3|1<<4;
	GPIOA_CRH&=0xFFF0FFFF;		//设置位 清零	
	GPIOA_CRH|=0x00020000;		//PA12推挽输出
	GPIOA_ORD|=1<<12;			//设置初始灯为亮
	
	GPIOB_CRL&=0xFFFFFF0F;		//设置位 清零	
	GPIOB_CRL|=0x00000020;		//PB1推挽输出
	GPIOB_ORD|=1<<1;			//设置初始灯为灭
	
	GPIOC_CRH&=0xF0FFFFFF;		//设置位 清零
	GPIOC_CRH|=0x02000000;   	//PC14推挽输出
	GPIOC_ORD|=1<<14;			//设置初始灯为灭	
	while(j)
	{	
		GPIOA_ORD=0x1<<12;		//PA12高电平	
		Delay_ms(3000000);
		GPIOA_ORD=0x0<<12;		//PA12低电平
		Delay_ms(3000000);
		
		GPIOB_ORD=0x1<<1;		//PB1高电平	
		Delay_ms(3000000);
		GPIOB_ORD=0x0<<1;		//PB1低电平
		Delay_ms(3000000);
		
		GPIOC_ORD=0x1<<14;		//PC14高电平	
		Delay_ms(3000000);
		GPIOC_ORD=0x0<<14;		//PC14低电平
		Delay_ms(3000000);
	}
}

2.1.2加入设备

?2.2 编译生成hex文件

点击软件中的魔法棒,然后点击output,如下图

2.4 实验结果

?

三、心得

? 本次实验用硬件仿真,来使得led灯闪灭,本次实验感觉就是代码很复杂,里面定义的引脚呀上面的很多,感觉更复杂,感觉看完了之后就忘了,然后烧录的过程还是挺好的,没有代码复杂,本来还说用汇编的,感觉看不明白就没搞了,学艺不精,还待提升。

?四、参考文献

stm32花式点流水灯_星&&河的博客-CSDN博客

?STM32寄存器的简介、地址查找,与直接操作寄存器_geekYatao-CSDN博客_stm32寄存器

?STM32从地址到寄存器_geekYatao-CSDN博客_stm32寄存器地址

基于汇编和C语言STM32流水灯依次闪烁_Laul Ken-Yi的博客-CSDN博客

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-22 11:06:03  更:2021-10-22 11:06:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:17:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码