娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

設(shè)計(jì)按鍵 FIFO 主要有三個(gè)方面的好處: 
1.可以有效的記錄按鍵事件的發(fā)生,特別是需要實(shí)現(xiàn)按鍵的按下,長(zhǎng)按,彈起等事件,使用 FIFO的方式來(lái)實(shí)現(xiàn)是一種非常好的思路。 
2.系統(tǒng)是非阻塞的,這樣系統(tǒng)在檢測(cè)到按鍵按下的情況下,由于機(jī)械按鍵抖動(dòng)的原因不需要在這里等待一段時(shí)間,然后再確定按鍵是否按下。 
3.按鍵 FIFO 程序在嘀嗒定時(shí)器中定期的執(zhí)行檢測(cè),不需要在主程序中一直做檢測(cè),這樣可以有效的降低系統(tǒng)資源消耗。 

關(guān)于按鍵是否該使用中斷方式去實(shí)現(xiàn)的問(wèn)題,很多初學(xué)者都比較模糊,我這里從兩方面簡(jiǎn)單說(shuō)一下,純屬個(gè)人見(jiàn)解,如果那位有更好的意見(jiàn),歡迎提出來(lái)。 

從裸機(jī)的角度分析 
中斷方式:中斷方式可以有效的檢測(cè)到按鍵按下的消息,并執(zhí)行相應(yīng)的程序,但是用中斷方式實(shí)現(xiàn)按鍵 FIFO 相對(duì)就有點(diǎn)麻煩,如果每個(gè)按鍵都是獨(dú)立的接一個(gè) IO 引腳,需要我們給每個(gè) IO都設(shè)置一個(gè)中斷,程序中過(guò)多的中斷會(huì)影響系統(tǒng)的穩(wěn)定性。 
查詢方式:查詢方式有一個(gè)最大的缺點(diǎn)就是需要程序定期的去執(zhí)行查詢,耗費(fèi)一定的系統(tǒng)資源,實(shí)際上耗費(fèi)不了多大的系統(tǒng)資源,因?yàn)檫@種查詢方式也只是查詢按鍵是否按下,按鍵事件的執(zhí)行還是在主程序里面實(shí)現(xiàn)。 
從 OS 的角度分析 
中斷方式:在 OS 中要盡可能少用中斷方式,因?yàn)樵?RTOS 中過(guò)多的使用中斷會(huì)影響系統(tǒng)的穩(wěn)定性和可預(yù)見(jiàn)性(搶占式調(diào)度的 OS 基本沒(méi)有可預(yù)見(jiàn)性,基于時(shí)間觸發(fā)調(diào)度的可預(yù)見(jiàn)性要好很多)。比較重要的事件處理需要用中斷的方式。 

查詢方式:對(duì)于用戶按鍵推薦使用這種查詢方式來(lái)實(shí)現(xiàn),現(xiàn)在的 OS 基本都帶有 CPU 利用率的功能,這個(gè)按鍵 FIFO 占用的還是很小的,基本都在%1 以下。

這個(gè)按鍵 FIFO 程序主要用于掃描掃描獨(dú)立按鍵,具有軟件濾波機(jī)制,具有按鍵 FIFO。可以檢測(cè)如下事件: 
1.   按鍵按下 
2.   按鍵彈起 
3.   長(zhǎng)按鍵 
4.   長(zhǎng)按時(shí)自動(dòng)連發(fā) 

聲明代碼如下:


  1. /** 

  2.   ****************************************************************************** 

  3.   * @file       : bsp_key.h  

  4.   * @author     : xiaofeng  

  5.   * @version    : V1.0 

  6.   * @date       : 2015.05.21 

  7.   * @brief      : STM32F4 KEY FIFO 

  8.   ****************************************************************************** 

  9.   * @attention: 

  10.   * 

  11.   ****************************************************************************** 

  12.   */  

  13.       

  14. /* Define to prevent recursive inclusion -------------------------------------*/  

  15. #ifndef __BSP_KEY_H__  

  16. #define __BSP_KEY_H__  

  17.   

  18. #ifdef __cplusplus  

  19.  extern "C" {  

  20. #endif  

  21.   

  22. /* Includes ------------------------------------------------------------------*/  

  23. #include "stm32f4xx.h"  

  24.   

  25. /* Exported types ------------------------------------------------------------*/  

  26.   

  27. // 按鍵ID  

  28. typedef enum  

  29. {  

  30.     KID_K1 = 0,  

  31.     KID_K2,  

  32.     KID_K3,  

  33.     KID_K4  

  34. }KEY_ID_E;  

  35.   

  36. /* 

  37.     定義鍵值代碼, 必須按如下次序定時(shí)每個(gè)鍵的按下、彈起和長(zhǎng)按事件 

  38.     推薦使用enum, 不用#define,原因: 

  39.     (1) 便于新增鍵值,方便調(diào)整順序,使代碼看起來(lái)舒服點(diǎn) 

  40.     (2) 編譯器可幫我們避免鍵值重復(fù)。 

  41. */  

  42. typedef enum  

  43. {  

  44.     KEY_NONE = 0,           /* 0 表示按鍵事件 */  

  45.   

  46.     KEY1_DOWN,              /* 1鍵按下 */  

  47.     KEY1_UP,                /* 1鍵彈起 */  

  48.     KEY1_LONG,              /* 1鍵長(zhǎng)按 */  

  49.   

  50.     KEY2_DOWN,              /* 2鍵按下 */  

  51.     KEY2_UP,                /* 2鍵彈起 */  

  52.     KEY2_LONG,              /* 2鍵長(zhǎng)按 */  

  53. }KEY_ENUM;  

  54.   

  55. /* Exported constants --------------------------------------------------------*/  

  56. /* Exported macro ------------------------------------------------------------*/  

  57. #define KEY_COUNT           2       // 按鍵個(gè)數(shù)  

  58. #define KEY_FIFO_SIZE       10      // 按鍵FIFO大小  

  59. #define KEY_FILTER_TIME     5       // 按鍵濾波時(shí)間50ms, 只有連續(xù)檢測(cè)到50ms狀態(tài)不變才認(rèn)為有效,包括彈起和按下兩種事件  

  60. #define KEY_LONG_TIME       0       // 長(zhǎng)按時(shí)間. 0,表示不檢測(cè)長(zhǎng)按鍵; 其他,檢測(cè)長(zhǎng)按鍵的時(shí)間  

  61. #define KEY_REPEAT_SPEED    0       // 長(zhǎng)按鍵連發(fā)速度. 0,表示不支持連發(fā),上報(bào)長(zhǎng)按事件;其他,連發(fā)按下  

  62.   

  63. // 按鍵口對(duì)應(yīng)的RCC時(shí)鐘及引腳  

  64. #define RCC_ALL_KEY     (RCC_AHB1Periph_GPIOA )  

  65.   

  66. #define GPIO_PORT_K1    GPIOA  

  67. #define GPIO_PIN_K1     GPIO_Pin_0  

  68.   

  69. #define GPIO_PORT_K2    GPIOD  

  70. #define GPIO_PIN_K2     GPIO_Pin_1  

  71.   

  72. /* Exported functions --------------------------------------------------------*/   

  73. void KEY_Init(void);  

  74. void KEY_Scan(void);  

  75.   

  76. void KEY_FIFO_Clear(void);  

  77. uint8_t KEY_FIFO_Get(void);  

  78.   

  79. uint8_t KEY_GetState(KEY_ID_E ucKeyID);  

  80. void KEY_SetParam(uint8_t ucKeyID, uint16_t LongTime, uint8_t  RepeatSpeed);  

  81.   

  82. #ifdef __cplusplus  

  83. }  

  84. #endif  

  85.   

  86. #endif   

  87.   

  88.   

  89. /*****END OF FILE****/  


實(shí)現(xiàn)代碼如下:


  1. /** 

  2.   ****************************************************************************** 

  3.   * @file       : bsp_key.h  

  4.   * @author     : xiaofeng  

  5.   * @version    : V1.0 

  6.   * @date       : 2015.05.21 

  7.   * @brief      : STM32F4 KEY FIFO 

  8.   ****************************************************************************** 

  9.   * @attention: 

  10.   * 

  11.   ****************************************************************************** 

  12.   */  

  13. /* Includes ------------------------------------------------------------------*/  

  14. #include "bsp_key.h"  

  15. /* Private typedef -----------------------------------------------------------*/  

  16. // 每個(gè)按鍵對(duì)應(yīng)1個(gè)全局的結(jié)構(gòu)體變量。  

  17. typedef struct  

  18. {  

  19.     /* 下面是一個(gè)函數(shù)指針,指向判斷按鍵手否按下的函數(shù) */  

  20.     uint8_t (*IsKeyDownFunc)(void); /* 按鍵按下的判斷函數(shù),1表示按下 */  

  21.   

  22.     uint8_t  Count;         /* 濾波器計(jì)數(shù)器 */  

  23.     uint8_t  State;         /* 按鍵當(dāng)前狀態(tài)(按下還是彈起) */  

  24.     uint16_t LongCount;     /* 長(zhǎng)按計(jì)數(shù)器 */  

  25.     uint16_t LongTime;      /* 按鍵按下持續(xù)時(shí)間, 0表示不檢測(cè)長(zhǎng)按 */  

  26.     uint8_t  RepeatSpeed;   /* 連續(xù)按鍵周期 */  

  27.     uint8_t  RepeatCount;   /* 連續(xù)按鍵計(jì)數(shù)器 */  

  28. }KEY_T;  

  29.   

  30. // 按鍵FIFO用到變量   

  31. typedef struct  

  32. {  

  33.     uint8_t Buf[KEY_FIFO_SIZE];     /* 鍵值緩沖區(qū) */  

  34.     uint8_t Read;                   /* 緩沖區(qū)讀指針 */  

  35.     uint8_t Write;                  /* 緩沖區(qū)寫(xiě)指針 */  

  36. }KEY_FIFO_T;  

  37.   

  38. /* Private define ------------------------------------------------------------*/  

  39. /* Private macro -------------------------------------------------------------*/  

  40. /* Private variables ---------------------------------------------------------*/  

  41. static KEY_T s_tBtn[KEY_COUNT];  

  42. static KEY_FIFO_T s_tKey;       /* 按鍵FIFO變量,結(jié)構(gòu)體 */  

  43.   

  44. /* Private function prototypes -----------------------------------------------*/  

  45. static void KEY_FIFO_Init(void);  

  46. static void KEY_GPIO_Config(void);  

  47. static void KEY_FIFO_Put(uint8_t _KeyCode);  

  48. static void KEY_Detect(uint8_t i);  

  49.   

  50. /* Private functions ---------------------------------------------------------*/  

  51. /** 

  52.   * @brief  :   KEY初始化 

  53.   * @note       :   

  54.   * @param  : 

  55.   * @retval : 

  56.   */  

  57. void KEY_Init(void)  

  58. {  

  59.     KEY_GPIO_Config();  

  60.     KEY_FIFO_Init();  

  61. }  

  62.   

  63. /** 

  64.   * @brief  : 清空按鍵FIFO緩沖區(qū) 

  65.   * @note   : 無(wú)   

  66.   * @param  : 無(wú) 

  67.   * @retval : 無(wú) 

  68.   */  

  69. void KEY_FIFO_Clear(void)  

  70. {  

  71.     s_tKey.Read = s_tKey.Write;  

  72. }  

  73.   

  74. /** 

  75.   * @brief  : 從按鍵FIFO緩沖區(qū)讀取一個(gè)鍵值 

  76.   * @note   : 無(wú)   

  77.   * @param  : 

  78.   * @retval : 按鍵代碼 

  79.   */  

  80. uint8_t KEY_FIFO_Get(void)  

  81. {  

  82.     uint8_t ret;  

  83.   

  84.     if (s_tKey.Read == s_tKey.Write)  

  85.     {  

  86.         return KEY_NONE;  

  87.     }  

  88.     else  

  89.     {  

  90.         ret = s_tKey.Buf[s_tKey.Read];  

  91.   

  92.         if (++s_tKey.Read >= KEY_FIFO_SIZE)  

  93.         {  

  94.             s_tKey.Read = 0;  

  95.         }  

  96.         return ret;  

  97.     }  

  98. }  

  99. /** 

  100.   * @brief  : 讀取按鍵的狀態(tài) 

  101.   * @note   : 無(wú)   

  102.   * @param  : ucKeyID : 按鍵ID,從0開(kāi)始 

  103.   * @retval : 1 表示按下, 0 表示未按下 

  104.   */  

  105. uint8_t KEY_GetState(KEY_ID_E ucKeyID)  

  106. {  

  107.     return s_tBtn[ucKeyID].State;  

  108. }  

  109. /** 

  110.   * @brief  : 設(shè)置按鍵參數(shù) 

  111.   * @note   : 無(wú)   

  112.   * @param  : ucKeyID : 按鍵ID,從0開(kāi)始 

  113.   *           LongTime : 長(zhǎng)按事件時(shí)間 

  114.   *           RepeatSpeed : 連發(fā)速度 

  115.   * @retval : 無(wú) 

  116.   */  

  117. void KEY_SetParam(uint8_t ucKeyID, uint16_t LongTime, uint8_t  RepeatSpeed)  

  118. {  

  119.     s_tBtn[ucKeyID].LongTime = LongTime;        /* 長(zhǎng)按時(shí)間 0 表示不檢測(cè)長(zhǎng)按鍵事件 */  

  120.     s_tBtn[ucKeyID].RepeatSpeed = RepeatSpeed;  /* 長(zhǎng)按鍵連發(fā)的速度,0表示不支持連發(fā) */  

  121.     s_tBtn[ucKeyID].RepeatCount = 0;            /* 連發(fā)計(jì)數(shù)器 */  

  122. }  

  123.   

  124. /** 

  125.   * @brief  : 掃描所有按鍵。非阻塞,被周期性的調(diào)用(如systick中斷) 

  126.   * @note   : 無(wú)   

  127.   * @param  : 無(wú) 

  128.   * @retval : 無(wú) 

  129.   */  

  130. void KEY_Scan(void)  

  131. {  

  132.     uint8_t i;  

  133.   

  134.     for (i = 0; i < KEY_COUNT; i++)  

  135.     {  

  136.         KEY_Detect(i);  

  137.     }  

  138. }  

  139.   

  140. /***************************************************************************/  

  141. /** 

  142.   * @brief  : 配置按鍵對(duì)應(yīng)的GPIO 

  143.   * @note   : 無(wú)   

  144.   * @param  : 無(wú) 

  145.   * @retval : 無(wú) 

  146.   */  

  147. static void KEY_GPIO_Config(void)  

  148. {  

  149.     GPIO_InitTypeDef GPIO_InitStructure;  

  150.   

  151.     /* 第1步:打開(kāi)GPIO時(shí)鐘 */  

  152.     RCC_AHB1PeriphClockCmd(RCC_ALL_KEY, ENABLE);  

  153.   

  154.     /* 第2步:配置所有的按鍵GPIO為浮動(dòng)輸入模式(實(shí)際上CPU復(fù)位后就是輸入狀態(tài)) */  

  155.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;        /* 設(shè)為輸入口 */  

  156.     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      /* 設(shè)為推挽模式 */  

  157.     GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;    /* 無(wú)需上下拉電阻 */  

  158.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   /* IO口最大速度 */  

  159.   

  160.     GPIO_InitStructure.GPIO_Pin = GPIO_PIN_K1;  

  161.     GPIO_Init(GPIO_PORT_K1, &GPIO_InitStructure);  

  162.   

  163.     GPIO_InitStructure.GPIO_Pin = GPIO_PIN_K2;  

  164.     GPIO_Init(GPIO_PORT_K2, &GPIO_InitStructure);  

  165. }  

  166. /** 

  167.   * @brief  : 判斷按鍵是否按下 

  168.   * @note   : 無(wú)   

  169.   * @param  : 無(wú) 

  170.   * @retval : 1 表示按下,0表示未按下 

  171.   */  

  172. static uint8_t IsKey1Down(void) {if (GPIO_ReadInputDataBit(GPIO_PORT_K1, GPIO_PIN_K1) == 0) return 1;else return 0;}  

  173. static uint8_t IsKey2Down(void) {if (GPIO_ReadInputDataBit(GPIO_PORT_K2, GPIO_PIN_K2) == 0) return 1;else return 0;}  

  174. /** 

  175.   * @brief  : 初始化按鍵變量 

  176.   * @note   : 無(wú)   

  177.   * @param  : 無(wú) 

  178.   * @retval : 無(wú) 

  179.   */  

  180. static void KEY_FIFO_Init(void)  

  181. {  

  182.     uint8_t i;  

  183.   

  184.     /* 對(duì)按鍵FIFO讀寫(xiě)指針清零 */  

  185.     s_tKey.Read = 0;  

  186.     s_tKey.Write = 0;  

  187.   

  188.     /* 給每個(gè)按鍵結(jié)構(gòu)體成員變量賦一組缺省值 */  

  189.     for (i = 0; i < KEY_COUNT; i++)  

  190.     {  

  191.         s_tBtn[i].LongTime = KEY_LONG_TIME;         /* 長(zhǎng)按時(shí)間 0 表示不檢測(cè)長(zhǎng)按鍵事件 */  

  192.         s_tBtn[i].Count = KEY_FILTER_TIME / 2;      /* 計(jì)數(shù)器設(shè)置為濾波時(shí)間的一半 */  

  193.         s_tBtn[i].State = 0;                        /* 按鍵缺省狀態(tài),0為未按下 */  

  194.         s_tBtn[i].RepeatSpeed = KEY_REPEAT_SPEED;   /* 按鍵連發(fā)的速度,0表示不支持連發(fā) */  

  195.         s_tBtn[i].RepeatCount = 0;                  /* 連發(fā)計(jì)數(shù)器 */  

  196.     }  

  197.   

  198.     /* 判斷按鍵按下的函數(shù) */  

  199.     s_tBtn[0].IsKeyDownFunc = IsKey1Down;  

  200.     s_tBtn[1].IsKeyDownFunc = IsKey2Down;  

  201. }  

  202. /** 

  203.   * @brief  : 將1個(gè)鍵值壓入按鍵FIFO緩沖區(qū) 

  204.   * @note   : 無(wú)   

  205.   * @param  : KeyCode : 按鍵代碼 

  206.   * @retval : 無(wú) 

  207.   */  

  208. static void KEY_FIFO_Put(uint8_t _KeyCode)  

  209. {  

  210.     s_tKey.Buf[s_tKey.Write] = _KeyCode;  

  211.   

  212.     if (++s_tKey.Write  >= KEY_FIFO_SIZE)  

  213.     {  

  214.         s_tKey.Write = 0;  

  215.     }  

  216. }  

  217. /** 

  218.   * @brief  : 檢測(cè)一個(gè)按鍵。非阻塞狀態(tài),必須被周期性的調(diào)用 

  219.   * @note   : 無(wú)   

  220.   * @param  : 按鍵數(shù) 

  221.   * @retval : 無(wú) 

  222.   */  

  223. static void KEY_Detect(uint8_t i)  

  224. {  

  225.     KEY_T *pBtn;  

  226.   

  227.     pBtn = &s_tBtn[i];  

  228.     if (pBtn->IsKeyDownFunc())  

  229.     {// 按鍵按下  

  230.         if (pBtn->Count < KEY_FILTER_TIME)  

  231.         {  

  232.             pBtn->Count = KEY_FILTER_TIME;  

  233.         }  

  234.         else if(pBtn->Count < 2 * KEY_FILTER_TIME)  

  235.         {  

  236.             pBtn->Count++;  

  237.         }  

  238.         else  

  239.         {  

  240.             if (pBtn->State == 0)  

  241.             {  

  242.                 pBtn->State = 1;  

  243.   

  244.                 /* 發(fā)送按鈕按下的消息 */  

  245.                 KEY_FIFO_Put((uint8_t)(3 * i + 1));  

  246.             }  

  247.   

  248.             if (pBtn->LongTime > 0)  

  249.             {  

  250.                 if (pBtn->LongCount < pBtn->LongTime)  

  251.                 {  

  252.                     /* 發(fā)送按鈕持續(xù)按下的消息 */  

  253.                     if (++pBtn->LongCount == pBtn->LongTime)  

  254.                     {  

  255.                         if (pBtn->RepeatSpeed > 0)  

  256.                         {  

  257.                             pBtn->LongCount = 0;  

  258.                               

  259.                             if (++pBtn->RepeatCount >= pBtn->RepeatSpeed)  

  260.                             {  

  261.                                 pBtn->RepeatCount = 0;  

  262.                                 /* 常按鍵后,每隔10ms發(fā)送1個(gè)按鍵 */  

  263.                                 KEY_FIFO_Put((uint8_t)(3 * i + 1));  

  264.                             }            

  265.                         }  

  266.                         else  

  267.                         {  

  268.                             /* 鍵值放入按鍵FIFO */  

  269.                             KEY_FIFO_Put((uint8_t)(3 * i + 3));  

  270.                         }  

  271.                     }  

  272.                 }  

  273.             }  

  274.         }  

  275.     }  

  276.     else  

  277.     {// 按鍵抬起  

  278.         if(pBtn->Count > KEY_FILTER_TIME)  

  279.         {  

  280.             pBtn->Count = KEY_FILTER_TIME;  

  281.         }  

  282.         else if(pBtn->Count != 0)  

  283.         {  

  284.             pBtn->Count--;  

  285.         }  

  286.         else  

  287.         {  

  288.             if (pBtn->State == 1)  

  289.             {  

  290.                 pBtn->State = 0;  

  291.   

  292.                 /* 發(fā)送按鈕彈起的消息 */  

  293.                 KEY_FIFO_Put((uint8_t)(3 * i + 2));  

  294.             }  

  295.         }  

  296.   

  297.         pBtn->LongCount = 0;  

  298.         pBtn->RepeatCount = 0;  

  299.     }  

  300. }  

  301.   

  302. /*****END OF FILE****/  


關(guān)鍵字:STM32F4  按鍵FIFO 引用地址:STM32F4 按鍵FIFO設(shè)計(jì)

上一篇:STM32內(nèi)存使用及分配
下一篇:KeilMDK配置項(xiàng)中Use MicroLIB是干什么的

推薦閱讀

都說(shuō)研發(fā)難,創(chuàng)新難,中小公司的工程師想要在研發(fā)的過(guò)程中獲得有效的技術(shù)支持更是難上加難。難?難?難?難道就沒(méi)有辦法可以解決這些難題了?世強(qiáng)元件電商的技術(shù)難題模塊,可以快速有效解決這一難題。 在世強(qiáng)元件電商的技術(shù)難題模塊上,匯集了根據(jù)世強(qiáng)25年線下服務(wù)經(jīng)驗(yàn)總結(jié)而成的真實(shí)案例解答以及世強(qiáng)元件電商上線后工程師在技術(shù)難題模塊的提問(wèn)解答。工程...
一、項(xiàng)目配置1、新建項(xiàng)目文件夾"TimSeg";2、通過(guò)Keil5創(chuàng)建新項(xiàng)目,保存在所創(chuàng)建的文件夾中(設(shè)項(xiàng)目名為pTimSeg),選擇MCU芯片為"STM32F103ZE"(本程序使用的硬件為:STM32-PZ6806L開(kāi)發(fā)板)3、在"TimSeg"文件夾下新建"CMSIS"、"Device"、"Public"、"Startup"、"User"和"Lib"文件夾。① 在"CMSIS"文件夾中復(fù)制"core_cm3.h"和"core_cm3.c"文件;② 在" Dev...
5月28日消息 據(jù)外媒sammobile報(bào)道,三星將從8月開(kāi)始批量生產(chǎn)5nm Exynos芯片。三星7nm Exynos 990芯片此前因高功耗等問(wèn)題備受爭(zhēng)議。后來(lái),有消息稱(chēng)三星正在對(duì)該芯片組進(jìn)行改進(jìn),并計(jì)劃在今年下半年推出修訂版。  根據(jù)與ZDNet Korea交流的業(yè)內(nèi)人士消息,三星已經(jīng)完成了基于5nm EUV工藝的下一代Exynos SoC批量生產(chǎn)所需的所有準(zhǔn)備工作。目前,...

史海拾趣

問(wèn)答坊 | AI 解惑

車(chē)載收音機(jī)噪音和假臺(tái)多怎么辦?

車(chē)載收音機(jī)噪音和假臺(tái)多怎么辦?…

查看全部問(wèn)答∨

一種新型的CMOS電流反饋運(yùn)算放大器

引言 近年來(lái),人們?cè)絹?lái)越關(guān)注低電壓狀態(tài)下的集成電路,這主要是因?yàn)楸銛y式電子產(chǎn)品需要盡可能低的功耗,以延長(zhǎng)電池供電的時(shí)間,而放大器作為集成電路的一種重要的組成部分是國(guó)內(nèi)外研究的熱點(diǎn)。文獻(xiàn)[1~3]描述了低電壓狀態(tài)下電壓模式放大器的設(shè)計(jì), ...…

查看全部問(wèn)答∨

可以驅(qū)動(dòng)10個(gè)LED的背光驅(qū)動(dòng)芯片

目前在手機(jī),MP4等領(lǐng)域多數(shù)用到可以驅(qū)動(dòng)多個(gè)LED的芯片,現(xiàn)在本公司有一款主推產(chǎn)品可以驅(qū)動(dòng)10個(gè)LED的, 就是RT9293的,性價(jià)比各方面都比較有優(yōu)勢(shì)。可以提供資料,并備有大量原裝無(wú)鉛現(xiàn)貨。歡迎大家前來(lái)索取,(請(qǐng)來(lái)電或來(lái)郵件或取資料)張生,MAIL ...…

查看全部問(wèn)答∨

什么是模擬電路 一個(gè)小時(shí)看透.pdf

什么是模擬電路 一個(gè)小時(shí)看透…

查看全部問(wèn)答∨

求助:為什么WINCE加載完NANDFLASH之后無(wú)法繼續(xù)啟動(dòng)?

我有兩塊板子,一塊是QQ2440的開(kāi)發(fā)板,一塊是自己做的開(kāi)發(fā)板,兩塊板子基本一樣,但是同樣的程序(WINCE5.0)在QQ2440里可以啟動(dòng)整個(gè)系統(tǒng),在我做的板子上啟動(dòng)時(shí)卻卡在了NANDFLASH之后,未能進(jìn)入電源管理模塊。有人說(shuō)可能是觸發(fā)了外部中斷EINT0使系 ...…

查看全部問(wèn)答∨

incompatible memory model

我編寫(xiě)的C51程序在編譯后提示說(shuō)DATA SEGMENT TOO LARGE,所以我就將部分變量改成idata型,而且將memory module改成large:variable XDATA,在編譯后就有提示說(shuō)error:incompitable memory model     MODULE:  .\\SJA1000_PELI.lib ...…

查看全部問(wèn)答∨

linux鍵盤(pán)及串口驅(qū)動(dòng)問(wèn)題,大家指教,謝謝了

目前要做一個(gè)事情,就是把以前的i2c的鍵盤(pán)驅(qū)動(dòng)改為串口的。 有個(gè)問(wèn)題:                 串口驅(qū)動(dòng)中可供其他驅(qū)動(dòng)調(diào)用的讀寫(xiě)等接口函數(shù)在哪個(gè)地方? 小弟初學(xué),希望高手不吝賜教,可以再 ...…

查看全部問(wèn)答∨

嵌入式群,歡迎你的加入

嵌入式群,歡迎你的加入 47541803 …

查看全部問(wèn)答∨

緊急求援!

求8051四位LED倒計(jì)時(shí)時(shí)鐘程序設(shè)計(jì) P2.4-P2.7位碼輸出口,P0段碼輸出口 采用反向驅(qū)動(dòng)   有圖及詳細(xì)解釋…

查看全部問(wèn)答∨

STM32調(diào)試

                                 請(qǐng)教,我在調(diào)試時(shí)可以通過(guò)斷點(diǎn)及單步運(yùn)行在watch窗口看變量的值,怎么樣在全速運(yùn)行時(shí)查看變量的值啊?…

查看全部問(wèn)答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車(chē)開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 丹寨县| 靖江市| 朔州市| 浮山县| 两当县| 黄石市| 泉州市| 浪卡子县| 绥棱县| 黄龙县| 樟树市| 德钦县| 东明县| 临沧市| 礼泉县| 商都县| 溆浦县| 永仁县| 隆化县| 凤城市| 会昌县| 大英县| 那曲县| 尚志市| 滦南县| 南澳县| 丽水市| 望都县| 甘谷县| 桦甸市| 上饶市| 奇台县| 汶上县| 清河县| 闻喜县| 株洲市| 蚌埠市| 福建省| 桐梓县| 东丽区| 叙永县|