芯片為stm32f103c8t6
程序用GPI0_B0作為ADC1輸入口,用規則通道轉換數據。通過設置ADON位觸發ADC轉換。
無標題.png (11.35 KB, 下載次數: 47)
下載附件
2023-6-20 21:48 上傳
無標題2.png (134.53 KB, 下載次數: 35)
下載附件
2023-6-20 21:48 上傳
無標題4.png (90.49 KB, 下載次數: 44)
下載附件
2023-6-20 22:16 上傳
無標題1.png (21.33 KB, 下載次數: 38)
下載附件
2023-6-20 21:53 上傳
問題1:PB0引腳固定接在通道8,ADC1,2可以經過通道8測量數據。這樣理解對不對
問題2:上圖寄存器中的SWSTART位 與 ADON位的功能有點分不清楚
問題3:程序聯機調試的時候,PB0無論接0伏還是3.3伏。ADC1數據寄存器DR總是在0000到大概3FFF之間跑。以下是程
*************STM32F103C8T6*****************
GPIOC EQU 0X40011000 ;GPIO端口C基地址
RCC_CFGR EQU 0X40021004
RCC_APB2ENR EQU 0X40021018
GPIOB EQU 0X40010C00 ;GPIO端口B 基地址
ADC_1 EQU 0X40012400 ;ADC1 基地址
AFIO EQU 0X40010000 ;AFIO基地址
AREA ICODE,CODE
ENTRY
EXPORT __main
__main ;主程序
BL SET_BIOS
LOOP
BL DELAY
LDR R0,=ADC_1 ;開始轉換規則通道,S數據右對齊
LDR R1,=0X000E0801
STR R1,[R0,#8]
BL DELAY
B LOOP
SET_BIOS
PUSH {R0,R1,LR}
LDR R0,=RCC_APB2ENR ;使能ADC_1,GPIO_B,GPIO_C,AFIO
LDR R1,=0X0000021D
STR R1,[R0]
LDR R0,=RCC_CFGR ;ADC時鐘分頻
LDR R1,=0XC000
STR R1,[R0]
LDR R0,=GPIOB ;設置gpio b為模擬輸入
LDR R1,=0X00
STR R1,[R0]
LDR R0,=GPIOC ;設置gpio c13為輸出 (指示燈)
LDR R1,=0X00300000
STR R1,[R0,#0X4]
LDR R1,=0XFFFFFFFF ;打開 GPIO 13 LED
STR R1,[R0,#0X0C]
LDR R0,=AFIO ;設ADC1外部觸發規則轉換與TIM8_TRGO相連
LDR R1,=0X70000
STR R1,[R0,#4]
LDR R0,=ADC_1 ;數據右對齊 并且校準
LDR R1,=0X000E0804
STR R1,[R0,#8]
LDR R0,=ADC_1 ;通道8轉換時間寄存器
LDR R1,=0X07000000
STR R1,[R0,#10]
LDR R0,=ADC_1
LDR R1,=0X08 ;規則通道 通道8第一個轉換
STR R1,[R0,#34]
LDR R0,=ADC_1 ;數據右對齊 并且校準
LDR R1,=0X000E0804
LDR R1,[R0,#8]
POP {R0,R1,LR}
BX LR
DELAY
PUSH {R5,LR}
LDR R5,=0X00005003
DELAY1
SUB R5,#0X00000001
CMP R5,#0X00000000
BNE DELAY1
POP {R5,LR}
BX LR
ALIGN ;ALIGN四字節對齊
END
|