Giter Site home page Giter Site logo

jakubstandarski / stm32f4xx_projects Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 9.48 MB

Repository containing projects based on STM32F4xx microcontrollers.

C 98.96% Assembly 0.94% C++ 0.02% Makefile 0.08%
stm32 stm32f4xx stm32f407 cortex-m4 arm armv7 arm-none-eabi makefile

stm32f4xx_projects's Introduction

STM32F4xx: Tutorials | Projects | Knowledge

Overview

Goal

Introduction into embedded systems based on STM32F4xx microcontrollers.

Topics

Microcontrolles (boards):

  • STM32F407xx (STM32F407G-DISC1)
  • STM32F413xx (STM32 NUCLEO-F413ZH)
  • STM32F401xx (STM32 NUCLEO-F401RE) [DEPRECATED]

Peripherals:

  • Clocks (HSI, HSE, PLL)
  • Timers
  • RTC
  • GPIOs
  • ADC
  • I2C
  • SPI
  • USART/UART
  • DMA

Programming:

  • Makefile
  • Cross-compilation
  • Linker script
  • Startup code
  • Low-layer API
  • HAL

System requirements

  • OS: Ubuntu 20.04
  • Toolchain: GNU Arm Embedded Toolchain 9-2020-q2-update 9.3.1
  • Third party packages: STM32CubeF4

stm32f4xx_projects's People

stm32f4xx_projects's Issues

CMSIS_OS_V2: osErrorISR returned by osKernelInitialize(), osThreadNew(), osKernelStart()

PROBLEM: any of the OS functions returns osErrorISR.

Description
Each OS function call returns osErrorISR. What is more, IS_IRQ() function returns value: 32 decimal. It should not happen, because none of the IRQ is not defined.

/**
osStatus_t osKernelInitialize (void) {
  osStatus_t stat;

  if (IS_IRQ()) {
    stat = osErrorISR;
  }
  else {
    if (KernelState == osKernelInactive) {
      #if defined(USE_FREERTOS_HEAP_5) && (HEAP_5_REGION_SETUP == 1)
        vPortDefineHeapRegions (configHEAP_5_REGIONS);
      #endif
      KernelState = osKernelReady;
      stat = osOK;
    } else {
      stat = osError;
    }
  }

  return (stat);
}
/**
  \brief   Get IPSR Register
  \details Returns the content of the IPSR Register.
  \return               IPSR Register value
 */
__STATIC_FORCEINLINE uint32_t __get_IPSR(void)
{
  uint32_t result;

  __ASM volatile ("MRS %0, ipsr" : "=r" (result) );
  return(result);
}

The most interesting fact is that, such problem occurs only if functions responsible of reading GPIO pin are used, such as:

LL_GPIO_IsInputPinSet(GPIOA, LL_GPIO_PIN_3)  or
LL_GPIO_IsOutputPinSet(GPIOA, LL_GPIO_PIN_2) 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.