欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: stm32每次都必須要一個一個地配置IO口?純新人問一道問題 [打印本頁]

作者: haohaoxue51    時間: 2018-11-26 08:22
標題: stm32每次都必須要一個一個地配置IO口?純新人問一道問題
舉個最簡單的例子,點亮LED燈,LED與IO口 B pin5 引腳相連
我想讓LED亮
不能在主函數里單獨寫一個
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
直接拉低引腳5,讓燈亮

而是必須在之前寫一堆函數比如:
GPIO_InitTypeDef  GPIO_InitStructure;
         
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);         //使能PB,PE端口時鐘
        
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                                 //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度為50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure);                                         //根據設定參數初始化GPIOB.5
GPIO_SetBits(GPIOB,GPIO_Pin_5);                                                 //PB.5 輸出高


上面這么多函數每次寫新程序都要寫是嗎?
不能直接在主函數里寫GPIO_ResetBits 或GPIO_setBits來直接決定引腳電平嗎?
就像51單片機直接給1或0直接決定高低電平

作者: xuyaqi    時間: 2018-11-26 09:18
stm32確實每次都必須配置IO口,這樣做可帶來的好處是,一個IO口可以根據需要有多種用途,不用的不送電節能。雖然麻煩,好處多多。
作者: jiajuntao    時間: 2018-11-26 09:20
可以做個。c和。h文件專門配置這個
作者: lxy1315252900    時間: 2018-11-26 09:45
不能啊,必須先使能時鐘
作者: sclzgl    時間: 2018-11-26 10:46
STM32的IO口功能比51多很多,根據不同需要可以復用配置成不同的功能,在使用前,單片機需要知道你將該IO口配置成什么功能,因此在每次對該IO進行操作前,必須要對IO進行配置后才能進行操作。
作者: haohaoxue51    時間: 2018-11-26 13:22
xuyaqi 發表于 2018-11-26 09:18
stm32確實每次都必須配置IO口,這樣做可帶來的好處是,一個IO口可以根據需要有多種用途,不用的不送電節能 ...

能簡單說說stm32 的四個輸入和4個輸出的模式的區別嗎,網上的好啰嗦啊,能通俗易懂的說一下嗎,哪幾個常用?
作者: haohaoxue51    時間: 2018-11-26 13:22
sclzgl 發表于 2018-11-26 10:46
STM32的IO口功能比51多很多,根據不同需要可以復用配置成不同的功能,在使用前,單片機需要知道你將該IO口 ...

能簡單說說stm32 的四個輸入和4個輸出的模式的區別嗎,網上的好啰嗦啊,能通俗易懂的說一下嗎,哪幾個常用?
作者: 封小墨    時間: 2018-11-26 13:41
是的,必須這么做
作者: yzgxhld    時間: 2018-11-26 16:27
你可以不用庫函數寫,直接寫入寄存器就行
作者: laigs218    時間: 2018-11-26 19:39
是的這是必需的,stm32 必需先規規劃 RCC (CLOCK), 接著定義 GPIO 的應用式, 建義參考 ST STM32 的庫函數及文件,
作者: laigs218    時間: 2018-11-26 19:40
是的這是必需的,stm32 必需先規規劃 RCC (CLOCK), 接著定義 GPIO 的應用式,
建義參考 ST STM32 的庫函數及文件,

作者: 莫邪0    時間: 2018-11-26 20:15
不能,stm32為了耗能低,還有一些外設沒有必要用到那么高的頻率,不像51很多東西都是固定的,因為你要是用這個引腳當然要初始化,給它一個指令配置它,不然它怎么知道你的需求是什么,只要一次初始化以后后面的程序使用就不需要初始化了,可以直接用那些引腳拉低拉高函數,剛開始學總是會有很多疑問,先堅持教程看完就會對它有個整體的理解,也就會接受這個機制
作者: 人間2    時間: 2018-11-26 21:07
是的,每次都需要的
作者: superplaim    時間: 2018-11-26 21:27
如果使用庫函數的方式開發如同你寫的方式,是要一個一個配置io的,如果用寄存器的方式寫程序,只需要對相關io相關寄存器寫入數值就行了,幾行代碼就搞定了,但是如果是初學者我覺得還是一個一個配置吧,用寄存器方式開發就是為了節省rom,一般情況下stm32的rom還是相當夠用的
作者: 萬物互聯    時間: 2018-11-26 21:57
st官方工具 stm32cubeMX 了解一下,從此基本不用手動配置了,配套使用hal庫,寫完程序后找到對效率影響大的地方換成LL庫,可以同時保證開發效率和運行效率。
作者: ustc_felix    時間: 2018-11-27 14:15
看你自己想要做什么,可以自己寫個函數,以后直接調用,送參數進去就可以了
作者: 萬能的金果果    時間: 2018-11-27 17:04
每次都必須要配置的,但是我們可以做一些常用的配置文件,封裝成一個.C與.h文件,模塊化的調用就可以了,也很方便的
作者: 萬能的金果果    時間: 2018-11-27 17:05
需要配置的,一些常用的寫成配置文件,封裝起來,模塊化的方式,以后直接調用了
作者: new_hand    時間: 2018-12-1 10:15
寄存器操作沒這么多事
作者: 2225384891    時間: 2018-12-2 09:04
STM32不像51一樣可以直接引用,不過如果你已經經定義了這個函數便可以了。如果你嫌麻煩  你可以復制呀。
作者: 877454063    時間: 2019-7-15 08:19
必須每次都要寫,因為32單片機的IO大部分有很多其他功能,需要配置才能正常使用
作者: zpwgf    時間: 2019-7-15 17:19
這就是stm32比51麻煩一點的地方,不過可以拷貝庫文件里面的例程,這樣只需修改對應的端口或者值就可以了。
作者: cjm82    時間: 2019-7-16 01:41
這個過程免不了的,不過也就是多復制一兩次的事而已,也可以把這些全丟到一個函數里去,直接調用這個函數即可.每次用就修改下函數里的代碼..就相當于51你開頭SBIT XXX = P1^0....對于庫函數的調用,最好寫下注釋或者DEFINE一下.比如
#define Led_Mie GPIO_SetBits(GPIOA,GPIO_Pin_0)
#define Led_Liang  GPIO_ResetBits(GPIOA,GPIO_Pin_0)

后面寫代碼直接用Led_Mie   Led_Liang 就行了.寫代碼盡量每個函數盡量簡短,函數數量可以多,命名時注意可讀性,不要學老譚的書上什么fun1 fun2之類的.多數剛從51轉過來學32的人都覺得32配置起來很啰嗦和麻煩,這是正常的,因為這樣的好處還沒感覺到而已,時間長習慣就好了.

32的庫可讀性很強也很規范,平時閱讀一下,對自己的代碼水平也是很有幫助的.

作者: 偉寧咔咔    時間: 2019-7-16 10:42
請使用STM32CubeMX軟件圖形化配置外設,軟件可自動生成初始代碼。推薦使用最新的HAL庫。




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1