STM32F103实现点灯(寄存器方式)
參考: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對應的時鐘為APB2,APB2和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
配置PB5為輸出模式
代碼實現:
上面得到了PB5的基地址為:0X40010C00
偏移地址為:0x00
得GPIOB_CRL寄存器地址為:0X40010C00
設置其為低電平(LED燈亮低電平觸發)
設置PE5為低電平
配置GPIOE_ODR(輸出數據寄存器out date register)寄存器得第5位為0.
代碼實現:
上面得到了PB5的基地址為:0x40011800
偏移地址為:0x0C
得GPIOE_ODR寄存器地址為:0x4001180C
設置PB5為低電平
代碼實現:
上面得到了PB5的基地址為:0X40010C00
偏移地址為:0x0C
得GPIOE_CRL寄存器地址為:0X40010C0C
燒寫程序
程序代碼:
下載安裝燒寫軟件FlyMcu,USB轉TTL也要安裝好,接線,找到串口的IO口對應好。需要拔插一下boot按鈕(boot0置1,上一篇講過串口下載方式的原理講解)。
按下復位鍵開始燒寫,如下圖所示:
這個是江江使用的燒寫軟件進行燒寫過程顯示:
boot0重新拔插置0,按壓一下復位鍵
結果:兩個燈都亮了!
總結
以上是生活随笔為你收集整理的STM32F103实现点灯(寄存器方式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS 更改MySQL数据库目录位
- 下一篇: SVPWM学习