|
|
芯片為stm32f103c8t6
程序用GPI0_B0作為ADC1輸入口,用規(guī)則通道轉(zhuǎn)換數(shù)據(jù)。通過(guò)設(shè)置ADON位觸發(fā)ADC轉(zhuǎn)換。
無(wú)標(biāo)題.png (11.35 KB, 下載次數(shù): 47)
下載附件
2023-6-20 21:48 上傳
無(wú)標(biāo)題2.png (134.53 KB, 下載次數(shù): 35)
下載附件
2023-6-20 21:48 上傳
無(wú)標(biāo)題4.png (90.49 KB, 下載次數(shù): 44)
下載附件
2023-6-20 22:16 上傳
無(wú)標(biāo)題1.png (21.33 KB, 下載次數(shù): 38)
下載附件
2023-6-20 21:53 上傳
問(wèn)題1:PB0引腳固定接在通道8,ADC1,2可以經(jīng)過(guò)通道8測(cè)量數(shù)據(jù)。這樣理解對(duì)不對(duì)
問(wèn)題2:上圖寄存器中的SWSTART位 與 ADON位的功能有點(diǎn)分不清楚
問(wèn)題3:程序聯(lián)機(jī)調(diào)試的時(shí)候,PB0無(wú)論接0伏還是3.3伏。ADC1數(shù)據(jù)寄存器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 ;開(kāi)始轉(zhuǎn)換規(guī)則通道,S數(shù)據(jù)右對(duì)齊
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時(shí)鐘分頻
LDR R1,=0XC000
STR R1,[R0]
LDR R0,=GPIOB ;設(shè)置gpio b為模擬輸入
LDR R1,=0X00
STR R1,[R0]
LDR R0,=GPIOC ;設(shè)置gpio c13為輸出 (指示燈)
LDR R1,=0X00300000
STR R1,[R0,#0X4]
LDR R1,=0XFFFFFFFF ;打開(kāi) GPIO 13 LED
STR R1,[R0,#0X0C]
LDR R0,=AFIO ;設(shè)ADC1外部觸發(fā)規(guī)則轉(zhuǎn)換與TIM8_TRGO相連
LDR R1,=0X70000
STR R1,[R0,#4]
LDR R0,=ADC_1 ;數(shù)據(jù)右對(duì)齊 并且校準(zhǔn)
LDR R1,=0X000E0804
STR R1,[R0,#8]
LDR R0,=ADC_1 ;通道8轉(zhuǎn)換時(shí)間寄存器
LDR R1,=0X07000000
STR R1,[R0,#10]
LDR R0,=ADC_1
LDR R1,=0X08 ;規(guī)則通道 通道8第一個(gè)轉(zhuǎn)換
STR R1,[R0,#34]
LDR R0,=ADC_1 ;數(shù)據(jù)右對(duì)齊 并且校準(zhǔn)
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四字節(jié)對(duì)齊
END
|
|