久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

stm32里面u16最大能是多少

查看數: 12813 | 評論數: 28 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2020-5-13 14:03

正文摘要:

根據我找到的資料來看,u16是兩個字節十六位的short int。它最大應該可以是32767.但是在我的程序里面它到9之后就不能輸出了。因為我用的proteus仿真,keil5與proteus的聯調,沒有做好。也沒有實際的電路板去調試。所 ...

回復

ID:736707 發表于 2020-5-13 21:27
April小紅花 發表于 2020-5-13 20:24
i 在中斷處理函數內部,是局部變量,你的問題跟 i 定義的類型無關,應該把 i 放在外面,定義成全局變量才能 ...

你好,實際上,我的i就是定義在外面的。定義在exit.c頭文件聲明下面的,也設置成全局變量了。只是為了上傳到網上,所以才放在函數里面的。
ID:483807 發表于 2020-5-15 21:30
你先把i設為10看看能不能輸出
ID:389856 發表于 2020-5-15 16:55
GPIO_ReadInputDataBit是對中斷狀態置位的函數,SET狀態就進入中斷。程序中的if判斷i是否加1的條件,建議檢查一下,是否是等于0,應該是等于SET。另外GPIO_ReadInputDataBit函數應該是在主循環中一直運行才可以
ID:565305 發表于 2020-5-14 16:15
首先,你的代碼中,i 每次在進中斷時,都被賦值為 0 ,所以這個函數局部變量,加 static 或者在函數外部定義一下(變成全局變量) 再觀察一下

其次,print 這個函數是耗時操作,不清楚你的這個中斷發生頻率以及是否產生中斷嵌套(一個中斷未執行完又進來同樣的一個中斷),中斷嵌套時,會發生各種不可預期、各種神奇、各種離譜的結果

最后,建議用示波器查一下你監控腳位的脈沖次數,如果只來 10次,那去猜測 u16 上限是沒有意義的
ID:736707 發表于 2020-5-14 12:26
lovezjf234 發表于 2020-5-14 10:32
你把這個函數內容貼上來GPIO_ReadInputDataBit。個人理解是驗證數據總共有多少位,而i只是記錄位數,所以 ...

你好,下面附上GPIO_ReadInputDataBit內容:它的作用好像是來判斷某個IO的電平的吧(個人理解,錯了請勿怪)。
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  uint8_t bitstatus = 0x00;
  
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GET_GPIO_PIN(GPIO_Pin));
  
  if ((GPIOx->IDR & GPIO_Pin) != (uint32_t)Bit_RESET)
  {
    bitstatus = (uint8_t)Bit_SET;
  }
  else
  {
    bitstatus = (uint8_t)Bit_RESET;
  }
  return bitstatus;
}
ID:739545 發表于 2020-5-14 10:32
_q_zj 發表于 2020-5-13 17:50
在proteus仿真時,我同時也在用示波器顯示GPIO_PIN_2引腳所接的方波信號。它一直在發送方波信號,這樣的 ...

你把這個函數內容貼上來GPIO_ReadInputDataBit。個人理解是驗證數據總共有多少位,而i只是記錄位數,所以i一般用unsigned char 就夠了。看來下面很多人的觀點,都不在關注點上
ID:592807 發表于 2020-5-14 08:50
_q_zj 發表于 2020-5-13 20:52
下面附上u8、u16、u32定義圖片:
C:\Users\home\Desktop\8I1FY}DC60RL{}AJW$L6VKT.png

給你寄兩個建議  
1把i變成全局變量
2吧printf("%d",i)中的%d換成%5d
ID:592807 發表于 2020-5-14 08:35
_q_zj 發表于 2020-5-13 20:37
你好,你的回答我沒有搞懂,抱歉,我還不會發圖片。我在網上搜到的都說 在stm32上面u16是int類型,為什么 ...

因為你每次觸發中斷都會執行一次 i= 0的操作。

51hei截圖20200514083247.png (23.24 KB, 下載次數: 76)

51hei截圖20200514083247.png
ID:751291 發表于 2020-5-13 23:34
另外建議樓主把程序里面的u16 i;更改為static u16 i;這樣每次進入到程序中不會再重新初始化數據i。
ID:751291 發表于 2020-5-13 23:31
u16的意思是無符號16位整形數,能夠表示的范圍是0~65535,也就是0~2^16-1。
ID:420836 發表于 2020-5-13 23:30
每次中斷,i 的值都將重置為0。
ID:736707 發表于 2020-5-13 21:29
_q_zj 發表于 2020-5-13 20:52
下面附上u8、u16、u32定義圖片:
C:\Users\home\Desktop\8I1FY}DC60RL{}AJW$L6VKT.png

第一次上傳圖片失敗,請忽略這個。謝謝。
ID:736707 發表于 2020-5-13 20:52
下面附上u8、u16、u32定義圖片:
C:\Users\home\Desktop\8I1FY}DC60RL{}AJW$L6VKT.png
ID:736707 發表于 2020-5-13 20:40
liuzx66 發表于 2020-5-13 19:18
u16是什么東東?不要問別人問題的時候使用非標準的定義。

您好,實際上我對u16到底是什么也不是很清楚。下面是我找到的一個網址,您可以看一下。如果您看懂了,希望您能告訴我一下。謝謝
網址:https://blog.csdn.net/xuw_xy/article/details/91868992
ID:736707 發表于 2020-5-13 20:37
黃youhui 發表于 2020-5-13 18:33
能打印出9太令人驚訝,你每次觸發中斷都會執行一次     u16 i = 0;還能打印出除了 0和1外的數字。

你好,你的回答我沒有搞懂,抱歉,我還不會發圖片。我在網上搜到的都說 在stm32上面u16是int類型,為什么不能輸出0和1外的數字呢?
ID:736707 發表于 2020-5-13 20:30
權威人物 發表于 2020-5-13 18:33
是的 ,加了再試試,記得要有控制對應的外部中斷IO口才會進入中斷

您好,我試了一下。還是一樣。串口輸出9之后,還是會卡掉。不管怎么說,謝謝您。
ID:751115 發表于 2020-5-13 20:26
u16, unsigned int , 0-65535.
ID:751115 發表于 2020-5-13 20:24
i 在中斷處理函數內部,是局部變量,你的問題跟 i 定義的類型無關,應該把 i 放在外面,定義成全局變量才能得到正確的結果。
ID:160500 發表于 2020-5-13 19:18
u16是什么東東?不要問別人問題的時候使用非標準的定義。
ID:592807 發表于 2020-5-13 18:33
能打印出9太令人驚訝,你每次觸發中斷都會執行一次     u16 i = 0;還能打印出除了 0和1外的數字。
ID:311846 發表于 2020-5-13 18:33
_q_zj 發表于 2020-5-13 17:52
您好,您的意思是指:我在變量聲明前加上static來進行修飾變量嗎?就是說把u16 i;改為static u16 i;是 ...

是的 ,加了再試試,記得要有控制對應的外部中斷IO口才會進入中斷
ID:736707 發表于 2020-5-13 17:52

您好,您的意思是指:我在變量聲明前加上static來進行修飾變量嗎?就是說把u16 i;改為static u16 i;是這樣嗎?
ID:736707 發表于 2020-5-13 17:50
lovezjf234 發表于 2020-5-13 16:24
你只是讀取數據的位數,和i取什么類型沒毛關系,所以即使你改成char也是同樣的結果。這個數值的大小GPIO_Pi ...

在proteus仿真時,我同時也在用示波器顯示GPIO_PIN_2引腳所接的方波信號。它一直在發送方波信號,這樣的話,我的數值應該是一直往上加的才對,那怎么會到9就加不上去了呢?還有,您說的讀取數據的位數是指什么啊?抱歉,我不太懂。您能說的明白些嗎,麻煩您了。
ID:736707 發表于 2020-5-13 17:41
青桑葉 發表于 2020-5-13 16:09
你輸出的是十進制數。i在函數體外面怎么定義的?別定義成char型。

我看了一下u16在stdint.h里面的定義,是unsigned short  int類型。 沒錯。
ID:311846 發表于 2020-5-13 16:38
static修飾
ID:739545 發表于 2020-5-13 16:24
你只是讀取數據的位數,和i取什么類型沒毛關系,所以即使你改成char也是同樣的結果。這個數值的大小GPIO_Pin_2上發來幾次下降沿低電平,和你設置i的類型沒關系
ID:280512 發表于 2020-5-13 16:09
你輸出的是十進制數。i在函數體外面怎么定義的?別定義成char型。
ID:736707 發表于 2020-5-13 14:56
補充:之后我把變量改成int類型,還是出現同樣的問題。求助各位大佬,望不吝賜教。謝謝。

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 求毛片| 98久久 | 国产福利在线看 | 久久久久久综合 | 一级片免费在线观看 | 亚洲精品大全 | av黄色在线 | 久艹网站 | 国产在线第一页 | 日韩免费福利视频 | 久久久久久久久久毛片 | 国产无人区一区二区三区 | 白浆在线 | 成人在线观看黄 | 国产精品永久久久久 | 欧美大片久久久 | 国产精品美女 | 日本成人中文字幕在线观看 | 免费精品久久久久久中文字幕 | 先锋资源吧 | 91综合在线视频 | 午夜手机在线视频 | 久久久久久久一区二区三区 | 狠狠操狠狠操 | 亚洲成人一区二区三区 | 久久男人| 日韩精品四区 | 国产成人精品一区二区三区在线观看 | 成人久久网 | 国产综合久久 | 日韩视频免费看 | 99视频免费看 | 国产激情精品视频 | 91亚洲精| 亚洲国产一区在线 | 99爱在线视频| 一区二区片| 欧美一级欧美三级在线观看 | 视频1区| 日韩欧美在线视频 | 91久久视频 |