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

歷史上的今天

今天是:2025年04月23日(星期三)

正在發(fā)生

2018年04月23日 | STM32F4 C++ 封裝庫 之 EXTI

發(fā)布者:beta12 來源: eefocus關(guān)鍵字:STM32F4  封裝庫  EXTI 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

 這幾天看了下 mbed 的源碼,給上層應(yīng)用調(diào)用的接口封裝的還是不錯(cuò)的。代碼質(zhì)量比較高,注釋也很詳細(xì),文檔和例程比較全。但是驅(qū)動層的程序全是 C 語言編寫的,代碼質(zhì)量就沒有那么高了,注釋比較少而且不規(guī)范,比較懷疑 mbed 的穩(wěn)定性。mbed 的實(shí)時(shí)內(nèi)核是用的 RTX5 ,文件系統(tǒng)用的 FatFs ,還有一些開源的協(xié)議棧,整套系統(tǒng)比較繁雜。mbed 框架是為物聯(lián)網(wǎng)設(shè)備開發(fā)的,工業(yè)控制級別的產(chǎn)品可以考慮用 RTE 框架。RTE 框架目前驅(qū)動層程序還不太完善,有好多需要自己去實(shí)現(xiàn),可能在過一段時(shí)間會好一些吧。總之物聯(lián)網(wǎng)產(chǎn)品可以用 mbed ,工業(yè)控制產(chǎn)品可以用 RTE 。這幾天封裝了 EXTI ,距離整套系統(tǒng)可以產(chǎn)生生產(chǎn)力還有很長的距離要走,我也不知道整個(gè)系統(tǒng)會成什么樣子,我能堅(jiān)持多久,不管了先做再說。在這里分享我的 STM32F4 C++ 封裝之旅。今天分享《STM32F4 C++ 封裝庫 之 EXTI》,直接上代碼了~

stm32f4xx_xexti.h 文件

/** 

  ****************************************************************************** 

  * \file    stm32f4xx_xexti.h 

  * \author  XinLi 

  * \version v1.0 

  * \date    20-March-2018 

  * \brief   Header file for external interrupt/event controller module. 

  ****************************************************************************** 

  * \attention 

  * 

  *

Copyright © 2018 XinLi

 

  * 

  * This program is free software: you can redistribute it and/or modify 

  * it under the terms of the GNU General Public License as published by 

  * the Free Software Foundation, either version 3 of the License, or 

  * (at your option) any later version. 

  * 

  * This program is distributed in the hope that it will be useful, 

  * but WITHOUT ANY WARRANTY; without even the implied warranty of 

  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 

  * GNU General Public License for more details. 

  * 

  * You should have received a copy of the GNU General Public License 

  * along with this program.  If not, see

  * 

  ****************************************************************************** 

  */  

  

#ifndef STM32F4XX_XEXTI_H  

#define STM32F4XX_XEXTI_H  

  

#include "stm32f4xx_ll_exti.h"  

  

/*! External interrupt/event controller module. */  

class XExti  

{  

public:  

  /*! Enumerate of EXTI lines. */  

  enum ExtiLine  

  {  

    Line0  = LL_EXTI_LINE_0,  /*!< EXTI line 0. */  

    Line1  = LL_EXTI_LINE_1,  /*!< EXTI line 1. */  

    Line2  = LL_EXTI_LINE_2,  /*!< EXTI line 2. */  

    Line3  = LL_EXTI_LINE_3,  /*!< EXTI line 3. */  

    Line4  = LL_EXTI_LINE_4,  /*!< EXTI line 4. */  

    Line5  = LL_EXTI_LINE_5,  /*!< EXTI line 5. */  

    Line6  = LL_EXTI_LINE_6,  /*!< EXTI line 6. */  

    Line7  = LL_EXTI_LINE_7,  /*!< EXTI line 7. */  

    Line8  = LL_EXTI_LINE_8,  /*!< EXTI line 8. */  

    Line9  = LL_EXTI_LINE_9,  /*!< EXTI line 9. */  

    Line10 = LL_EXTI_LINE_10, /*!< EXTI line 10. */  

    Line11 = LL_EXTI_LINE_11, /*!< EXTI line 11. */  

    Line12 = LL_EXTI_LINE_12, /*!< EXTI line 12. */  

    Line13 = LL_EXTI_LINE_13, /*!< EXTI line 13. */  

    Line14 = LL_EXTI_LINE_14, /*!< EXTI line 14. */  

    Line15 = LL_EXTI_LINE_15, /*!< EXTI line 15. */  

  #ifdef LL_EXTI_LINE_16  

    Line16 = LL_EXTI_LINE_16, /*!< EXTI line 16. */  

  #endif  

  #ifdef LL_EXTI_LINE_17  

    Line17 = LL_EXTI_LINE_17, /*!< EXTI line 17. */  

  #endif  

  #ifdef LL_EXTI_LINE_18  

    Line18 = LL_EXTI_LINE_18, /*!< EXTI line 18. */  

  #endif  

  #ifdef LL_EXTI_LINE_19  

    Line19 = LL_EXTI_LINE_19, /*!< EXTI line 19. */  

  #endif  

  #ifdef LL_EXTI_LINE_20  

    Line20 = LL_EXTI_LINE_20, /*!< EXTI line 20. */  

  #endif  

  #ifdef LL_EXTI_LINE_21  

    Line21 = LL_EXTI_LINE_21, /*!< EXTI line 21. */  

  #endif  

  #ifdef LL_EXTI_LINE_22  

    Line22 = LL_EXTI_LINE_22, /*!< EXTI line 22. */  

  #endif  

  #ifdef LL_EXTI_LINE_23  

    Line23 = LL_EXTI_LINE_23, /*!< EXTI line 23. */  

  #endif  

  #ifdef LL_EXTI_LINE_24  

    Line24 = LL_EXTI_LINE_24, /*!< EXTI line 24. */  

  #endif  

  #ifdef LL_EXTI_LINE_25  

    Line25 = LL_EXTI_LINE_25, /*!< EXTI line 25. */  

  #endif  

  #ifdef LL_EXTI_LINE_26  

    Line26 = LL_EXTI_LINE_26, /*!< EXTI line 26. */  

  #endif  

  #ifdef LL_EXTI_LINE_27  

    Line27 = LL_EXTI_LINE_27, /*!< EXTI line 27. */  

  #endif  

  #ifdef LL_EXTI_LINE_28  

    Line28 = LL_EXTI_LINE_28, /*!< EXTI line 28. */  

  #endif  

  #ifdef LL_EXTI_LINE_29  

    Line29 = LL_EXTI_LINE_29, /*!< EXTI line 29. */  

  #endif  

  #ifdef LL_EXTI_LINE_30  

    Line30 = LL_EXTI_LINE_30, /*!< EXTI line 30. */  

  #endif  

  #ifdef LL_EXTI_LINE_31  

    Line31 = LL_EXTI_LINE_31, /*!< EXTI line 31. */  

  #endif  

  };  

    

  /*! Enumerate of EXTI modes. */  

  enum ExtiMode  

  {  

    ModeInterrupt      = LL_EXTI_MODE_IT,       /*!< EXTI interrupt mode. */  

    ModeEvent          = LL_EXTI_MODE_EVENT,    /*!< EXTI event mode. */  

    ModeInterruptEvent = LL_EXTI_MODE_IT_EVENT, /*!< EXTI interrupt and event mode. */  

  };  

    

  /*! Enumerate of EXTI triggers. */  

  enum ExtiTrigger  

  {  

    TriggerNone          = LL_EXTI_TRIGGER_NONE,           /*!< EXTI none trigger. */  

    TriggerRising        = LL_EXTI_TRIGGER_RISING,         /*!< EXTI rising trigger. */  

    TriggerFalling       = LL_EXTI_TRIGGER_FALLING,        /*!< EXTI falling trigger. */  

    TriggerRisingFalling = LL_EXTI_TRIGGER_RISING_FALLING, /*!< EXTI rising and falling trigger. */  

  };  

    

  XExti(ExtiLine line, ExtiMode mode, ExtiTrigger trigger = TriggerNone);  

  virtual ~XExti();  

    

  void setLine(ExtiLine line);  

  ExtiLine getLine() const;  

    

  void setMode(ExtiMode mode);  

  ExtiMode getMode() const;  

    

  void setTrigger(ExtiTrigger trigger);  

  ExtiTrigger getTrigger() const;  

    

  void setFlag();  

  void clearFlag();  

    

  bool isFlagSet() const;  

    

  bool open();  

  void close();  

    

  bool isOpen() const;  

    

private:  

  ExtiLine    line;  

  ExtiMode    mode;  

  ExtiTrigger trigger;  

  bool        openFlag;  

    

  XExti(const XExti &) = delete;  

  XExti & operator = (const XExti &) = delete;  

};  

  

#endif // STM32F4XX_XEXTI_H 


stm32f4xx_xexti.cpp 文件

/** 

  ****************************************************************************** 

  * \file    stm32f4xx_xexti.cpp 

  * \author  XinLi 

  * \version v1.0 

  * \date    20-March-2018 

  * \brief   External interrupt/event controller module driver. 

  ****************************************************************************** 

  * \attention 

  * 

  *

Copyright © 2018 XinLi

 

  * 

  * This program is free software: you can redistribute it and/or modify 

  * it under the terms of the GNU General Public License as published by 

  * the Free Software Foundation, either version 3 of the License, or 

  * (at your option) any later version. 

  * 

  * This program is distributed in the hope that it will be useful, 

  * but WITHOUT ANY WARRANTY; without even the implied warranty of 

  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 

  * GNU General Public License for more details. 

  * 

  * You should have received a copy of the GNU General Public License 

  * along with this program.  If not, see

  * 

  ****************************************************************************** 

  */  

  

#include "stm32f4xx_xexti.h"  

  

static __IO uint32_t extiOpenFlag = 0;  

  

/*! 

   \brief Set external interrupt/event line flags. 

   \param line: EXTI line. 

*/  

static void SetExtiLineFlag(XExti::ExtiLine line)  

{  

  extiOpenFlag |= line;  

}  

  

/*! 

   \brief Clear external interrupt/event line flags. 

   \param line: EXTI line. 

*/  

static void ClearExtiLineFlag(XExti::ExtiLine line)  

{  

  extiOpenFlag &= ~line;  

}  

  

/*! 

   \brief  Is an external interrupt/event line flag set? 

   \param  line:  EXTI line. 

   \retval true:  External interrupt/event line flag is set. 

   \retval false: External interrupt/event line flag is not set. 

*/  

static bool IsExtiLineFlagSet(XExti::ExtiLine line)  

{  

  return ((extiOpenFlag & line) == line);  

}  

  

/*! 

   \brief External interrupt/event controller module constructor. 

   \param line:    EXTI line. 

   \param mode:    EXTI mode. 

   \param trigger: EXTI trigger. 

*/  

XExti::XExti(ExtiLine line, ExtiMode mode, ExtiTrigger trigger)  

{  

  this->line     = line;  

  this->mode     = mode;  

  this->trigger  = trigger;  

  this->openFlag = false;  

}  

  

/*! 

   \brief   External interrupt/event controller module destructor. 

   \details Restores the external interrupt/event controller to its default state. 

*/  

XExti::~XExti()  

{  

  close();  

}  

  

/*! 

   \brief Set external interrupt/event line. 

   \param line: EXTI line. 

*/  

void XExti::setLine(ExtiLine line)  

{  

  if(openFlag != true)  

  {  

    this->line = line;  

  }  

}  

  

/*! 

   \brief  Get external interrupt/event line. 

   \return EXTI line. 

*/  

XExti::ExtiLine XExti::getLine() const  

{  

  return line;  

}  

  

/*! 

   \brief Set external interrupt/event mode. 

   \param mode: EXTI mode. 

*/  

void XExti::setMode(ExtiMode mode)  

{  

  this->mode = mode;  

    

  if(openFlag == true)  

  {  

    if(mode == ModeInterrupt)  

    {  

      LL_EXTI_DisableEvent_0_31(line);  

      LL_EXTI_EnableIT_0_31(line);  

    }  

    else if(mode == ModeEvent)  

    {  

      LL_EXTI_DisableIT_0_31(line);  

      LL_EXTI_EnableEvent_0_31(line);  

    }  

    else  

    {  

      LL_EXTI_EnableIT_0_31(line);  

      LL_EXTI_EnableEvent_0_31(line);  

    }  

  }  

}  

  

/*! 

   \brief  Get external interrupt/event mode. 

   \return EXTI mode. 

*/  

XExti::ExtiMode XExti::getMode() const  

{  

  return mode;  

}  

  

/*! 

   \brief Set external interrupt/event trigger. 

   \param trigger: EXTI trigger. 

*/  

void XExti::setTrigger(ExtiTrigger trigger)  

{  

  this->trigger = trigger;  

    

  if(openFlag == true)  

  {  

    if(trigger == TriggerNone)  

    {  

      LL_EXTI_DisableRisingTrig_0_31(line);  

      LL_EXTI_DisableFallingTrig_0_31(line);  

    }  

    else if(trigger == TriggerRising)  

    {  

      LL_EXTI_DisableFallingTrig_0_31(line);  

      LL_EXTI_EnableRisingTrig_0_31(line);  

    }  

    else if(trigger == TriggerFalling)  

    {  

      LL_EXTI_DisableRisingTrig_0_31(line);  

      LL_EXTI_EnableFallingTrig_0_31(line);  

    }  

    else  

    {  

      LL_EXTI_EnableRisingTrig_0_31(line);  

      LL_EXTI_EnableFallingTrig_0_31(line);  

    }  

  }  

}  

  

/*! 

   \brief  Get external interrupt/event trigger. 

   \return EXTI trigger. 

*/  

XExti::ExtiTrigger XExti::getTrigger() const  

{  

  return trigger;  

}  

  

/*! 

   \brief Set external interrupt/event flags. 

*/  

void XExti::setFlag()  

{  

  if(openFlag == true)  

  {  

    LL_EXTI_GenerateSWI_0_31(line);  

  }  

}  

  

/*! 

   \brief Clear external interrupt/event flags. 

*/  

void XExti::clearFlag()  

{  

  if(openFlag == true)  

  {  

    LL_EXTI_ClearFlag_0_31(line);  

  }  

}  

  

/*! 

   \brief  Is an external interrupt/event flag set? 

   \retval true:  External interrupt/event flag is set. 

   \retval false: External interrupt/event flag is not set. 

*/  

bool XExti::isFlagSet() const  

{  

  if(openFlag == true)  

  {  

    return LL_EXTI_IsActiveFlag_0_31(line);  

  }  

  else  

  {  

    return false;  

  }  

}  

  

/*! 

   \brief  Open external interrupt/event line. 

   \retval true:  External interrupt/event line open success. 

   \retval false: External interrupt/event line open failure. 

*/  

bool XExti::open()  

{  

  if(IsExtiLineFlagSet(line) != true)  

  {  

    if(mode == ModeInterrupt)  

    {  

      LL_EXTI_DisableEvent_0_31(line);  

      LL_EXTI_EnableIT_0_31(line);  

    }  

    else if(mode == ModeEvent)  

    {  

      LL_EXTI_DisableIT_0_31(line);  

      LL_EXTI_EnableEvent_0_31(line);  

    }  

    else  

    {  

      LL_EXTI_EnableIT_0_31(line);  

      LL_EXTI_EnableEvent_0_31(line);  

    }  

      

    if(trigger == TriggerNone)  

    {  

      LL_EXTI_DisableRisingTrig_0_31(line);  

      LL_EXTI_DisableFallingTrig_0_31(line);  

    }  

    else if(trigger == TriggerRising)  

    {  

      LL_EXTI_DisableFallingTrig_0_31(line);  

      LL_EXTI_EnableRisingTrig_0_31(line);  

    }  

    else if(trigger == TriggerFalling)  

    {  

      LL_EXTI_DisableRisingTrig_0_31(line);  

      LL_EXTI_EnableFallingTrig_0_31(line);  

    }  

    else  

    {  

      LL_EXTI_EnableRisingTrig_0_31(line);  

      LL_EXTI_EnableFallingTrig_0_31(line);  

    }  

      

    SetExtiLineFlag(line);  

      

    openFlag = true;  

      

    return true;  

  }  

  else  

  {  

    return false;  

  }  

}  

  

/*! 

   \brief   Close external interrupt/event line. 

   \details Restores the external interrupt/event controller to its default state. 

*/  

void XExti::close()  

{  

  if(openFlag == true)  

  {  

    LL_EXTI_DisableIT_0_31(line);  

    LL_EXTI_DisableEvent_0_31(line);  

    LL_EXTI_DisableRisingTrig_0_31(line);  

    LL_EXTI_DisableFallingTrig_0_31(line);  

    LL_EXTI_ClearFlag_0_31(line);  

      

    ClearExtiLineFlag(line);  

      

    openFlag = false;  

  }  

}  

  

/*! 

   \brief  Is the external interrupt/event line open? 

   \retval true:  External interrupt/event line is open. 

   \retval false: External interrupt/event line is not open. 

*/  

bool XExti::isOpen() const  

{  

  return openFlag;  

}  


例程

/** 

  ****************************************************************************** 

  * @file    main.cpp 

  * @author  XinLi 

  * @version v1.0 

  * @date    20-March-2018 

  * @brief   Main program body. 

  ****************************************************************************** 

  * @attention 

  * 

  *

Copyright © 2018 XinLi

 

  * 

  * This program is free software: you can redistribute it and/or modify 

  * it under the terms of the GNU General Public License as published by 

  * the Free Software Foundation, either version 3 of the License, or 

  * (at your option) any later version. 

  * 

  * This program is distributed in the hope that it will be useful, 

  * but WITHOUT ANY WARRANTY; without even the implied warranty of 

  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 

  * GNU General Public License for more details. 

  * 

  * You should have received a copy of the GNU General Public License 

  * along with this program.  If not, see

  * 

  ****************************************************************************** 

  */  

  

/* Header includes -----------------------------------------------------------*/  

#include "main.h"  

#include "stm32f4xx_xgpio.h"  

#include "stm32f4xx_xexti.h"  

  

/* Macro definitions ---------------------------------------------------------*/  

/* Type definitions ----------------------------------------------------------*/  

/* Variable declarations -----------------------------------------------------*/  

/* Variable definitions ------------------------------------------------------*/  

/* Function declarations -----------------------------------------------------*/  

static void SystemClock_Config(void);  

  

/* Function definitions ------------------------------------------------------*/  

  

/** 

  * @brief  Main program. 

  * @param  None. 

  * @return None. 

  */  

int main(void)  

{  

  /* STM32F4xx HAL library initialization: 

       - Configure the Flash prefetch, instruction and Data caches 

       - Configure the Systick to generate an interrupt each 1 msec 

       - Set NVIC Group Priority to 4 

       - Global MSP (MCU Support Package) initialization 

     */  

  HAL_Init();  

    

  /* Configure the system clock to 168 MHz */  

  SystemClock_Config();  

    

  XExti exti4(XExti::Line4, XExti::ModeInterrupt);  

    

  exti4.open();  

    

  XGpio led0(XGpio::PortF, XGpio::Pin9,  XGpio::ModeOutput);  

  XGpio led1(XGpio::PortF, XGpio::Pin10, XGpio::ModeOutput);  

    

  led0.open();  

  led1.open();  

    

  for(;;)  

  {  

    if(exti4.isFlagSet() != true)  

    {  

      exti4.setFlag();  

      led0.setLevel(XGpio::LevelLow);  

      led1.setLevel(XGpio::LevelHigh);  

    }  

    else  

    {  

      exti4.clearFlag();  

      led0.setLevel(XGpio::LevelHigh);  

      led1.setLevel(XGpio::LevelLow);  

    }  

      

    HAL_Delay(250);  

  }  

}  

  

/** 

  * @brief  System Clock Configuration 

  *         The system Clock is configured as follow :  

  *            System Clock source            = PLL (HSE) 

  *            SYSCLK(Hz)                     = 168000000 

  *            HCLK(Hz)                       = 168000000 

  *            AHB Prescaler                  = 1 

  *            APB1 Prescaler                 = 4 

  *            APB2 Prescaler                 = 2 

  *            HSE Frequency(Hz)              = 8000000 

  *            PLL_M                          = 8 

  *            PLL_N                          = 336 

  *            PLL_P                          = 2 

  *            PLL_Q                          = 7 

  *            VDD(V)                         = 3.3 

  *            Main regulator output voltage  = Scale1 mode 

  *            Flash Latency(WS)              = 5 

  * @param  None 

  * @retval None 

  */  

static void SystemClock_Config(void)  

{  

  RCC_ClkInitTypeDef RCC_ClkInitStruct;  

  RCC_OscInitTypeDef RCC_OscInitStruct;  

  

  /* Enable Power Control clock */  

  __HAL_RCC_PWR_CLK_ENABLE();  

  

  /* The voltage scaling allows optimizing the power consumption when the device is  

     clocked below the maximum system frequency, to update the voltage scaling value  

     regarding system frequency refer to product datasheet.  */  

  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);  

  

  /* Enable HSE Oscillator and activate PLL with HSE as source */  

  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;  

  RCC_OscInitStruct.HSEState = RCC_HSE_ON;  

  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;  

  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;  

  RCC_OscInitStruct.PLL.PLLM = 8;  

  RCC_OscInitStruct.PLL.PLLN = 336;  

  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;  

  RCC_OscInitStruct.PLL.PLLQ = 7;  

  HAL_RCC_OscConfig(&RCC_OscInitStruct);  

    

  /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2  

     clocks dividers */  

  RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);  

  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;  

  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;  

  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;    

  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;    

  HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5);  

  

  /* STM32F405x/407x/415x/417x Revision Z devices: prefetch is supported  */  

  if (HAL_GetREVID() == 0x1001)  

  {  

    /* Enable the Flash prefetch */  

    __HAL_FLASH_PREFETCH_BUFFER_ENABLE();  

  }  

}  



關(guān)鍵字:STM32F4  封裝庫  EXTI 引用地址:STM32F4 C++ 封裝庫 之 EXTI

上一篇:ARM CMSIS Driver 學(xué)習(xí) 之 USART
下一篇:STM32F4 C++ 封裝庫 之 GPIO

推薦閱讀

1,開發(fā)環(huán)境 1,適用芯片:STM32F4全部芯片 2,固件庫:STM32F4xx_DSP_StdPeriph_Lib_V1.8.0 3,IDE:MDK5172,驅(qū)動源碼 Delay.h文件/**************************************************************** * Copyright (C) 2016, XinLi, all right reserved. * File name: Delay.h * Date: 2016.0...
車東西4月23日消息,特斯拉昨夜于美國總部舉行自動駕駛主題日活動(Tesla Autonomy Day),向到場投資者以及全球觀眾直播發(fā)布了預(yù)熱已久的完全自動駕駛3.0硬件(重點(diǎn)為車載計(jì)算機(jī))和最新研發(fā)進(jìn)展。活動現(xiàn)場硬件方面,基于特斯拉自研的自動駕駛專用芯片,以及ARM A72 CPU、GPU、ISP等一系列芯片,其完全自動駕駛計(jì)算機(jī)可以達(dá)到144TOPS的算力,但功耗僅...
全球領(lǐng)先的半導(dǎo)體解決方案供應(yīng)商瑞薩電子株式會社(TSE:6723)今日發(fā)布面向瑞薩32位Arm? Cortex?-M微控制器RA產(chǎn)品家族的靈活配置軟件包(FSP)更新。FSP 1.0版增加了新的安全和連接功能、高級神經(jīng)網(wǎng)絡(luò)、機(jī)器學(xué)習(xí)和電機(jī)控制功能,以及增強(qiáng)的編譯器、調(diào)試器與開發(fā)環(huán)境。其增強(qiáng)的安全和連接功能可幫助開發(fā)人員快速創(chuàng)建安全的IoT端點(diǎn)和邊緣解決方案,可適...
我們都知道一體化污水提升泵站也叫一體化污水泵站或者一體化提升泵站,卻很少有人知道也叫一體化地埋式預(yù)制提升泵站,他們都是將污水提升傳送到污水處理廠的泵站。一體化地埋式預(yù)制提升泵站作用就是提升污水的高程,因?yàn)槲鬯懿幌窠o水管,是沒有壓力的,靠污水自身的重力自流的,因?yàn)槌鞘形鬯W(wǎng)管搜集的污水面積較廣,離污水處理廠距離較遠(yuǎn)。不行能將管道...

史海拾趣

問答坊 | AI 解惑

嵌入式系統(tǒng)

嵌入式系統(tǒng)的核心是嵌入式微處理器。嵌入式微處理器一般就具備以下4個(gè)特點(diǎn): 1)對實(shí)時(shí)多任務(wù)有很強(qiáng)的支持能力,能完成多任務(wù)并且有較短的中斷響應(yīng)時(shí)間,從而使內(nèi)部的代碼和實(shí)時(shí)內(nèi)核心的執(zhí)行時(shí)間減少到最低限度。 2)具有功能很強(qiáng)的存儲區(qū)保護(hù) ...…

查看全部問答∨

合作伙伴

職位要求 1.        本科以上學(xué)歷,電子、自動化等相關(guān)專業(yè) 2.        熟練掌握 C 語言,熟悉匯編語言。 3.        熟練掌握 DSP 的開發(fā)環(huán)境 4 ...…

查看全部問答∨

無線型睡眠呼吸暫停癥監(jiān)視系統(tǒng)淺析

           前言 人生約有三分之一的時(shí)間在睡眠中度過,良好的睡眠是保證身體健康的必要條件。睡眠呼吸暫停癥(sleep apnea)是一種很常見的睡眠呼吸疾病,據(jù)調(diào)查,在美國約有24%的成年男性及9%成年女 ...…

查看全部問答∨

evc 代碼提示

在vc環(huán)境下 對象之后如果輸入一點(diǎn)的話 就會列出該對象的成員變量或方法 那么evc下面該如何讓它列出來 不提示的話黑燈瞎火的感覺,編程相當(dāng)痛苦 有時(shí)過分一點(diǎn) 連函數(shù)的參數(shù)都不提示~…

查看全部問答∨

以太網(wǎng)控制器KSZ8851, ping timeout的問題

實(shí)驗(yàn)板使用KSZ8851-16MLL以太網(wǎng)控制器 使用PC連續(xù)ping實(shí)驗(yàn)板直到timeout,當(dāng)ping 153次、384次或者537次后,timeout; 我測試了20組,ping 153次后timeout出現(xiàn)了9次,384后出現(xiàn)7次,537出現(xiàn)4次。 這個(gè)似乎太規(guī)律了吧? TCP/IP協(xié)議棧問題不大, ...…

查看全部問答∨

tornado安裝問題

請高手幫忙: 問下tornado的安裝過程中,如果從開始菜單直接運(yùn)行tornado,會提示錯(cuò)誤,這是因?yàn)榘惭b還沒有完成,在C盤Tornado2.2文件夾下你會發(fā)現(xiàn)一個(gè)setup.log文件,用ultraedit或vim打開,在最后一行你會發(fā)現(xiàn)一個(gè)注冊表鍵值,進(jìn)入注冊表,找到這 ...…

查看全部問答∨

新手請教大家一個(gè)問題啊,謝謝

我想問一下,單片機(jī)項(xiàng)目開發(fā),是從硬件開始,然后是軟件,比如我做一個(gè)簡單的流水燈試驗(yàn),要買哪些零件啊,并且如何焊接啊, 如何設(shè)計(jì)原理圖啊,我真的不知道從何下手,高手教教我啊,謝謝了…

查看全部問答∨

有關(guān)I2C設(shè)置波特率的問題

s3c2410的板子 IICCON=IICCON_ACKEN|IICCON_CLK512|IICCON_INTR|IICCON_CLKPRE(0x3) 這條設(shè)置的波特率是多少?有誰知道嗎? 還有若要設(shè)置成9600bps應(yīng)該如何修改?…

查看全部問答∨

WIFI 睡眠喚醒問題

我最近在PDA上調(diào)WIFI睡眠喚醒,硬件上有兩個(gè)GPIO口可以控制芯片電流,是高使能,WIFI正常工作時(shí)要置為高,現(xiàn)在我在睡眠時(shí)在驅(qū)動中將其置低,在喚醒時(shí)將其拉高。我想問的是,喚醒時(shí),我還需要做些什么配置,才能使WIFI能正常工作?請高手指點(diǎn)! …

查看全部問答∨

終于要用430作實(shí)用儀器了,有幾個(gè)問題困惑著我。

1. 以前都是用最小系統(tǒng)版,現(xiàn)在只有一個(gè)MCU轉(zhuǎn)接版,那是不是要用導(dǎo)線自己連接個(gè)最小系統(tǒng)? 2. 如何把程序燒進(jìn)板子,我只用過UIF。可是看到有好多種方法,哪位老機(jī)友給介紹一下,謝謝~ 3. 單片機(jī)的數(shù)字地和模擬地隔離的問題 4. 用4節(jié)1.5V電池供電 ...…

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

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

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

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 长泰县| 大新县| 云梦县| 湖北省| 泰宁县| 陆川县| 舟曲县| 白山市| 垦利县| 固始县| 东源县| 潢川县| 周宁县| 大埔县| 威信县| 苏尼特右旗| 平阳县| 武宁县| 星子县| 萝北县| 新巴尔虎右旗| 剑阁县| 靖西县| 南丹县| 黄山市| 龙山县| 湖口县| 迁安市| 杂多县| 峨眉山市| 邛崃市| 青州市| 阿拉善盟| 图片| 云阳县| 许昌市| 长宁区| 天全县| 进贤县| 宁强县| 连江县|