日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32F103实现点灯(寄存器方式)

發布時間:2023/12/10 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

*(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);

燒寫程序

程序代碼:

下載安裝燒寫軟件FlyMcu,USB轉TTL也要安裝好,接線,找到串口的IO口對應好。需要拔插一下boot按鈕(boot0置1,上一篇講過串口下載方式的原理講解)。

按下復位鍵開始燒寫,如下圖所示:

這個是江江使用的燒寫軟件進行燒寫過程顯示:

boot0重新拔插置0,按壓一下復位鍵

結果:兩個燈都亮了!

總結

以上是生活随笔為你收集整理的STM32F103实现点灯(寄存器方式)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。