合肥珍岛公司做网站推广怎么样,建设网站的公司swot,wordpress转发微信,国外开源商城系统参考#xff1a;STM32F103系列最简易版点灯程序 作者#xff1a;一只青木呀 发布时间#xff1a;2020-10-21 11:40:38 网址#xff1a;https://blog.csdn.net/weixin_45309916/article/details/109196950 目录硬件软件点灯流程使能GPIO端口E和B对应的时钟找到GPIO对应的时钟… 参考STM32F103系列最简易版点灯程序 作者一只青木呀 发布时间2020-10-21 11:40:38 网址https://blog.csdn.net/weixin_45309916/article/details/109196950 目录硬件软件点灯流程使能GPIO端口E和B对应的时钟找到GPIO对应的时钟找到时钟对应的基地址(起始地址)打开GPIO端口B和端口E对应的时钟(偏移地址——寄存器)找到LED灯对应的GPIO端口E和B寄存器的基地址打开底板原理图找到LED灯的引脚找到LED0和LED1对应的引脚打开数据手册找到其基地址设置其端口为输出模式配置PE5为输出模式配置PB5为输出模式设置其为低电平(LED灯亮低电平触发)设置PE5为低电平设置PB5为低电平烧写程序硬件
STM32103最小系统开发板 注江江视频使用的开发板是STM32103 C8T6 软件
keil软件
点灯流程
1、使能GPIO端口B和E对应的时钟 2、找到LED灯对应的GPIO端口E和B寄存器的基地址 3、设置其端口PE5、PB5为输出模式(端口配置寄存器) 4、设置其为低电平(输出数据寄存器)
使能GPIO端口E和B对应的时钟
找到GPIO对应的时钟
在STM32F1XX中文参考手册第二章存储器和总线构架 2.1 系统构架里找到 GPIOB、GPIOE对应的时钟为APB2APB2和APB1都挂载在AHB系统总线上。
找到时钟对应的基地址(起始地址) 其基地址为0x40021000
打开GPIO端口B和端口E对应的时钟(偏移地址——寄存器)
找到了初始地址下面就要找他的偏移地址也就是找相对应的寄存器 由上图可知这个寄存器有32位我们将寄存器相应位数置为0或者1可以打开其相应的功能。
代码实现
复位和时钟控制器得基地址为0x40021000 偏移值为0x18 得到APB2外设寄存器地址为0x40021018
使能IO端口B和IO端口E即设置寄存器的第6位和第3位为1 *(unsigned int *)0x40021018 | 0x01 6;//强转成指针再取内容*(unsigned int *)0x40021018 | 0x01 3;找到LED灯对应的GPIO端口E和B寄存器的基地址
打开底板原理图找到LED灯的引脚 找到LED0和LED1对应的引脚
LED1对应的引脚为GPIO端口E的PE5
LED0对应的引脚为GPIO端口B的PB5
打开数据手册找到其基地址 可看到GPIO端口E的基地址为0x4001 1800 可看到GPIO端口B的基地址为0X4001 0C00
设置其端口为输出模式
配置PE5为输出模式
注0-7为低 8-15为高 PE5 这个5就为低
代码实现 上面得到了PE5的基地址为0x40011800 偏移地址为0x00 得GPIOE_CRL寄存器地址为0x40011800
*(unsigned int *)0x40011800 | (0x0001) 20;//或操作不会改变其他位
配置PB5为输出模式 代码实现 上面得到了PB5的基地址为0X40010C00 偏移地址为0x00 得GPIOB_CRL寄存器地址为0X40010C00
*(unsigned int *)0x40010C00 | (0x01) 20;
设置其为低电平(LED灯亮低电平触发)
设置PE5为低电平 配置GPIOE_ODR输出数据寄存器out date register寄存器得第5位为0.
代码实现 上面得到了PB5的基地址为0x40011800 偏移地址为0x0C 得GPIOE_ODR寄存器地址为0x4001180C
*(unsigned int *)0x4001180C ~(0x01 5);
设置PB5为低电平 代码实现 上面得到了PB5的基地址为0X40010C00 偏移地址为0x0C 得GPIOE_CRL寄存器地址为0X40010C0C
*(unsigned int *)0x40010C00 ~(0x01 5);
烧写程序
程序代码 下载安装烧写软件FlyMcuUSB转TTL也要安装好接线找到串口的IO口对应好。需要拔插一下boot按钮boot0置1上一篇讲过串口下载方式的原理讲解。
按下复位键开始烧写如下图所示 这个是江江使用的烧写软件进行烧写过程显示 boot0重新拔插置0按压一下复位键
结果两个灯都亮了