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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12220|回復: 28
打印 上一主題 下一主題
收起左側

stm32里面u16最大能是多少

  [復制鏈接]
跳轉到指定樓層
樓主
根據我找到的資料來看,u16是兩個字節十六位的short int。它最大應該可以是32767.但是在我的程序里面它到9之后就不能輸出了。因為我用的proteus仿真,keil5與proteus的聯調,沒有做好。也沒有實際的電路板去調試。所以希望各位大佬能看一下我到底是哪里出錯了,給一些建議。謝謝。下附代碼及仿真結果。


void EXTI2_IRQHandler(void)                                                //外部中斷服務函數
{
        u16 i = 0;
        unsigned char display[80] ;

                if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2)==0)//PB2是否為下降沿
                {
                        i++;                }
                else
                {
                        a++;
                }

                printf("i: %d\r\n",i);
        EXTI_ClearITPendingBit(EXTI_Line2);                        //清除中斷標志位
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

你好,實際上,我的i就是定義在外面的。定義在exit.c頭文件聲明下面的,也設置成全局變量了。只是為了上傳到網上,所以才放在函數里面的。
回復

使用道具 舉報

板凳
ID:736707 發表于 2020-5-13 14:56 | 只看該作者
補充:之后我把變量改成int類型,還是出現同樣的問題。求助各位大佬,望不吝賜教。謝謝。
回復

使用道具 舉報

地板
ID:280512 發表于 2020-5-13 16:09 | 只看該作者
你輸出的是十進制數。i在函數體外面怎么定義的?別定義成char型。
回復

使用道具 舉報

5#
ID:739545 發表于 2020-5-13 16:24 | 只看該作者
你只是讀取數據的位數,和i取什么類型沒毛關系,所以即使你改成char也是同樣的結果。這個數值的大小GPIO_Pin_2上發來幾次下降沿低電平,和你設置i的類型沒關系
回復

使用道具 舉報

6#
ID:311846 發表于 2020-5-13 16:38 | 只看該作者
static修飾
回復

使用道具 舉報

7#
ID:736707 發表于 2020-5-13 17:41 | 只看該作者
青桑葉 發表于 2020-5-13 16:09
你輸出的是十進制數。i在函數體外面怎么定義的?別定義成char型。

我看了一下u16在stdint.h里面的定義,是unsigned short  int類型。 沒錯。
回復

使用道具 舉報

8#
ID:736707 發表于 2020-5-13 17:50 | 只看該作者
lovezjf234 發表于 2020-5-13 16:24
你只是讀取數據的位數,和i取什么類型沒毛關系,所以即使你改成char也是同樣的結果。這個數值的大小GPIO_Pi ...

在proteus仿真時,我同時也在用示波器顯示GPIO_PIN_2引腳所接的方波信號。它一直在發送方波信號,這樣的話,我的數值應該是一直往上加的才對,那怎么會到9就加不上去了呢?還有,您說的讀取數據的位數是指什么啊?抱歉,我不太懂。您能說的明白些嗎,麻煩您了。
回復

使用道具 舉報

9#
ID:736707 發表于 2020-5-13 17:52 | 只看該作者

您好,您的意思是指:我在變量聲明前加上static來進行修飾變量嗎?就是說把u16 i;改為static u16 i;是這樣嗎?
回復

使用道具 舉報

10#
ID:311846 發表于 2020-5-13 18:33 | 只看該作者
_q_zj 發表于 2020-5-13 17:52
您好,您的意思是指:我在變量聲明前加上static來進行修飾變量嗎?就是說把u16 i;改為static u16 i;是 ...

是的 ,加了再試試,記得要有控制對應的外部中斷IO口才會進入中斷
回復

使用道具 舉報

11#
ID:592807 發表于 2020-5-13 18:33 | 只看該作者
能打印出9太令人驚訝,你每次觸發中斷都會執行一次     u16 i = 0;還能打印出除了 0和1外的數字。
回復

使用道具 舉報

12#
ID:160500 發表于 2020-5-13 19:18 | 只看該作者
u16是什么東東?不要問別人問題的時候使用非標準的定義。
回復

使用道具 舉報

13#
ID:751115 發表于 2020-5-13 20:24 | 只看該作者
i 在中斷處理函數內部,是局部變量,你的問題跟 i 定義的類型無關,應該把 i 放在外面,定義成全局變量才能得到正確的結果。
回復

使用道具 舉報

14#
ID:751115 發表于 2020-5-13 20:26 | 只看該作者
u16, unsigned int , 0-65535.
回復

使用道具 舉報

15#
ID:736707 發表于 2020-5-13 20:30 | 只看該作者
權威人物 發表于 2020-5-13 18:33
是的 ,加了再試試,記得要有控制對應的外部中斷IO口才會進入中斷

您好,我試了一下。還是一樣。串口輸出9之后,還是會卡掉。不管怎么說,謝謝您。
回復

使用道具 舉報

16#
ID:736707 發表于 2020-5-13 20:37 | 只看該作者
黃youhui 發表于 2020-5-13 18:33
能打印出9太令人驚訝,你每次觸發中斷都會執行一次     u16 i = 0;還能打印出除了 0和1外的數字。

你好,你的回答我沒有搞懂,抱歉,我還不會發圖片。我在網上搜到的都說 在stm32上面u16是int類型,為什么不能輸出0和1外的數字呢?
回復

使用道具 舉報

17#
ID:736707 發表于 2020-5-13 20:40 | 只看該作者
liuzx66 發表于 2020-5-13 19:18
u16是什么東東?不要問別人問題的時候使用非標準的定義。

您好,實際上我對u16到底是什么也不是很清楚。下面是我找到的一個網址,您可以看一下。如果您看懂了,希望您能告訴我一下。謝謝
網址:https://blog.csdn.net/xuw_xy/article/details/91868992
回復

使用道具 舉報

18#
ID:736707 發表于 2020-5-13 20:52 | 只看該作者
下面附上u8、u16、u32定義圖片:
C:\Users\home\Desktop\8I1FY}DC60RL{}AJW$L6VKT.png
回復

使用道具 舉報

19#
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

第一次上傳圖片失敗,請忽略這個。謝謝。
回復

使用道具 舉報

20#
ID:420836 發表于 2020-5-13 23:30 | 只看該作者
每次中斷,i 的值都將重置為0。
回復

使用道具 舉報

21#
ID:751291 發表于 2020-5-13 23:31 | 只看該作者
u16的意思是無符號16位整形數,能夠表示的范圍是0~65535,也就是0~2^16-1。
回復

使用道具 舉報

22#
ID:751291 發表于 2020-5-13 23:34 | 只看該作者
另外建議樓主把程序里面的u16 i;更改為static u16 i;這樣每次進入到程序中不會再重新初始化數據i。
回復

使用道具 舉報

23#
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
回復

使用道具 舉報

24#
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
回復

使用道具 舉報

25#
ID:739545 發表于 2020-5-14 10:32 | 只看該作者
_q_zj 發表于 2020-5-13 17:50
在proteus仿真時,我同時也在用示波器顯示GPIO_PIN_2引腳所接的方波信號。它一直在發送方波信號,這樣的 ...

你把這個函數內容貼上來GPIO_ReadInputDataBit。個人理解是驗證數據總共有多少位,而i只是記錄位數,所以i一般用unsigned char 就夠了。看來下面很多人的觀點,都不在關注點上
回復

使用道具 舉報

26#
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;
}
回復

使用道具 舉報

27#
ID:565305 發表于 2020-5-14 16:15 | 只看該作者
首先,你的代碼中,i 每次在進中斷時,都被賦值為 0 ,所以這個函數局部變量,加 static 或者在函數外部定義一下(變成全局變量) 再觀察一下

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

最后,建議用示波器查一下你監控腳位的脈沖次數,如果只來 10次,那去猜測 u16 上限是沒有意義的
回復

使用道具 舉報

28#
ID:389856 發表于 2020-5-15 16:55 | 只看該作者
GPIO_ReadInputDataBit是對中斷狀態置位的函數,SET狀態就進入中斷。程序中的if判斷i是否加1的條件,建議檢查一下,是否是等于0,應該是等于SET。另外GPIO_ReadInputDataBit函數應該是在主循環中一直運行才可以
回復

使用道具 舉報

29#
ID:483807 發表于 2020-5-15 21:30 | 只看該作者
你先把i設為10看看能不能輸出
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美视频 | 综合久久99 | 国产成人午夜电影网 | 宅男伊人 | 欧美日韩中文字幕在线播放 | 久久精品无码一区二区三区 | 午夜精品久久久久久久星辰影院 | 日本高清视频在线播放 | 欧美日韩免费 | 久久伊人久久 | 久久久精品国产 | 狠狠影院 | 国产精品视频一 | 91精品国产91久久综合桃花 | 欧美精品综合在线 | av一级在线观看 | 午夜精品一区二区三区在线观看 | 国内精品久久久久久久影视简单 | 中文字幕免费视频 | 中文字幕电影在线观看 | 免费观看一级特黄欧美大片 | 欧美性猛片aaaaaaa做受 | 色视频网站在线观看 | 精品久久精品 | 青青草av在线播放 | 久久久久久久久久久久一区二区 | 日韩专区中文字幕 | 中日韩欧美一级片 | 99久久婷婷国产综合精品电影 | 天天摸天天看 | 羞羞涩涩在线观看 | 伊人网综合在线 | 欧美激情视频一区二区三区在线播放 | 欧美视频二区 | 国产区精品| 久久久久久综合 | 成人在线视频一区 | 日日操夜夜干 | 一级片视频免费 | 日日夜夜91 | 日韩成人免费视频 |