Go to file
Bradley Scott 260378e774 STM32: Fix 32-bit us ticker interrupt scheduling
For STM32 targets using a 32-bit timer for the microsecond ticker, the
driver did not properly handle timestamps that are in the past.  It
would just blindly set the compare register to the requested timestamp,
resulting in the interrupt being serviced up to 4295 seconds late
(i.e. after the 32-bit timer counts all the way around to hit the
timestamp again).

This problem can easily be reproduced by creating a Timeout object
then calling the timeout's attach_us() member function to attach a
callback with a timeout of 0 us.  The callback will not get called for
over 2147 seconds, and possibly up to 4295 seconds late if no other
microsecond ticker events are getting scheduled in the meantime.

Now, after the compare register has been set, the timestamp is checked
against the current time to see if the timestamp is in the past, and
if so, the compare event is manually set.

NOTE: By checking if the timestamp is in the past after configuring the
capture register, we ensure proper handling in the case where the timer
updates past the timestamp while setting the capture register.
2017-06-01 12:52:03 -04:00
.github Update pull_request_template.md 2016-09-08 12:05:47 +03:00
TESTS Merge pull request #4393 from 0xc0170/fix_race_test_single 2017-05-30 16:59:01 +01:00
cmsis Update cmain.S 2017-05-24 13:23:26 +02:00
drivers Rename the f parameter into hz to avoid confusion with a loopcounter 2017-05-16 10:37:50 +02:00
events Merge pull request #4111 from sg-/fix-the-docs 2017-04-21 14:10:17 +01:00
features Merge pull request #4321 from hanno-arm/update-mbedtls 2017-05-31 11:26:36 -05:00
hal Add an mbed API that allows the initialization of the CAN at the correct 2017-05-15 14:14:26 +02:00
platform CMSIS5: Remove ARM7 support and targets 2017-05-12 13:48:43 -05:00
rtos Merge pull request #4316 from c1728p9/remove_cortex_a 2017-05-15 11:55:36 -05:00
targets STM32: Fix 32-bit us ticker interrupt scheduling 2017-06-01 12:52:03 -04:00
tools Merge pull request #4377 from theotherjimmy/disable-cortex-A 2017-05-31 07:50:21 +01:00
.gitattributes Added .gitattributes for automatic LF line ending conversion 2013-08-08 13:19:34 +03:00
.gitignore Ignore .vscode folder 2017-01-11 20:48:05 +02:00
.pylintrc Add pylint configuration file 2016-08-16 11:48:45 -05:00
.travis.yml Enforce device_name is valid in targets.json 2017-02-08 14:54:26 -06:00
CONTRIBUTING.md Update CONTRIBUTING.md 2016-09-11 21:24:11 +08:00
DOXYGEN_FRONTPAGE.md Very minimal text 2016-08-04 14:09:59 +01:00
Jenkinsfile Update Jenkinsfile 2016-09-20 16:05:59 +03:00
LICENSE Add Apache v2 LICENSE file 2013-08-06 12:05:04 +01:00
README.md Edit Readme and add Travis Badges 2017-04-06 11:18:59 -05:00
doxygen_options.json [doxygen] Exclude tools and TESTS directories. Add macro 2017-05-02 12:47:30 -05:00
mbed.h mbed: version macros are not defined on master 2017-05-30 10:45:30 +01:00
requirements.txt Remove pycurl dependency 2016-10-20 16:24:47 -05:00

README.md

ARM mbed OS

mbed OS is an open-source embedded operating system designed for the "things" in the Internet of Things (IoT). mbed OS includes the features you need to develop a connected product using an ARM Cortex-M microcontroller.

mbed OS provides a platform that includes:

  • Security foundations.
  • Cloud management services.
  • Drivers for sensors, I/O devices and connectivity.

mbed OS is modular, configurable software that you can customize it to your device and to reduce memory requirements by excluding unused software.

Release Notes

The Release Notes detail the current release and previous versions.

Continuous Integration Status

We run continuous integration on all of our branches and pull requests to verify the stability of mbed OS. The following are the Travis CI indicators for mbed OS.

  • Master branch Master Branch CI Badge
  • Latest release Latest Tag CI Badge

Getting Started for Developers

You need mbed CLI to build mbed OS. For more details, read the mbed OS Handbook.

Getting Started for Contributors

We have a Contributing and Publishing Guide in the mbed OS Handbook.