MediaWiki API result

This is the HTML representation of the JSON format. HTML is good for debugging, but is unsuitable for application use.

Specify the format parameter to change the output format. To see the non-HTML representation of the JSON format, set format=json.

See the complete documentation, or the API help for more information.

{
    "batchcomplete": "",
    "continue": {
        "gapcontinue": "Stm32f100rb_stm32vldiscovery",
        "continue": "gapcontinue||"
    },
    "warnings": {
        "main": {
            "*": "Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/postorius/lists/mediawiki-api-announce.lists.wikimedia.org/> for notice of API deprecations and breaking changes."
        },
        "revisions": {
            "*": "Because \"rvslots\" was not specified, a legacy format has been used for the output. This format is deprecated, and in the future the new format will always be used."
        }
    },
    "query": {
        "pages": {
            "88": {
                "pageid": 88,
                "ns": 0,
                "title": "ST-LINK utility update",
                "revisions": [
                    {
                        "contentformat": "text/x-wiki",
                        "contentmodel": "wikitext",
                        "*": "Recent ST Microelectronics development boards come with a new version of the ST-LINK firmware to support the ARM mbed platform.\nThis update may give problems with the QStlink GUI tool recommended in this wiki to upload your firmware into the Discovery board's microcontroller.\n\nThe boards with the new firmware are identified by one of these facts:\n* when the board is connected to a computer is seen by the operating system as an USB drive.\n* the board order code has the word \"DISC1\" at its end, as an example: \"STM32F429I-DISC1\"\n* the ST-LINK firmware version is \"ST-LINK/V2-B\"\n\n=== Tested configurations ===\n* Boards with ST-LINK firmware version 2.27.15 '''work correctly''' with the QStlink utility 1.2.3.\n* Board with firmware 2.28.18 or above '''don't work''' with QStlink (see this [https://github.com/fpoussin/QStlink2/issues/33 github issue]).\n* QStlink version 1.3.0 '''don't work''' as it's still in development, and puts the board into a locked state that can be undone by flashing a binary with the stm32 Utility for Windows.\n\nIf you have a board with firmware 2.28.x, the firmware update function of STM32 Utility for Windows up to now downgrades your version to 2.27.x, while the standalone firmware updater updates it to 2.28.x.\n\n==== Flashing with mbed virtual drive ====\nYou can also use the mbed virtual USB drive to flash miosix binaries, however you may not be able to flash smaller binaries because the ST-LINK seems to be checking for a valid binary."
                    }
                ]
            },
            "40": {
                "pageid": 40,
                "ns": 0,
                "title": "Servo tutorial",
                "revisions": [
                    {
                        "contentformat": "text/x-wiki",
                        "contentmodel": "wikitext",
                        "*": "Include statements and namespace required to use this library\n<source lang=\"CPP\">\n#include \"drivers/servo_stm32.h\"\nusing namespace miosix;\n</source>\nThis is a C++ library, it cannot be used from a C source file.\n\nA servomotor is a device that allows to control the angular position of a shaft, like [https://www.sparkfun.com/products/10333 this one]. Servos work by reading a PWM signal with a fixed frequency, 50Hz by default, and a pulse period proportional to the desired angle.\n\n== Supported boards ==\n\nMiosix has a servo library that supports some boards using STM32 microcontrollers, namely the [[stm32f100rb_stm32vldiscovery]] and [[stm32f407vg_stm32f4discovery]].\n\n== GPIO connection ==\n\nThe library supports up to 4 servo outputs, that must be connected to the following GPIOs (that the library configures as TIMER alternate function when the output is enabled).\n\n* PB6 is the output 0\n* PB7 is the output 1\n* PB8 is the output 2\n* PB9 is the output 3\n\n== Library use ==\n\nThe library is a C++ class named ''SynchronizedServo''. It is a [https://en.wikipedia.org/wiki/Singleton_pattern singleton], so to instantiate it you have to call the ''instance()'' member function.\n\nYou can find examples on how to use the library in the [https://gitorious.org/miosix-kernel/miosix-kernel/source/0fb80132cd27fbd48021cd5a9adb21c90a9cb94e:miosix/_examples/servo miosix/_examples/servo] directory of the kernel.\n\n=== Closed loop control support ===\n\nIf there is the need to run a closed loop control code using the servo as an actuator, the library supports a way to synchronize the controller with the servo waveform generation, using the ''waitForCycleBegin()'' member function in a loop. The value set with ''setPosition()'' will be output at the '''next''' cycle, so take into account the existence of a z^-1 in your plant model.\n\n<source lang=\"CPP\">\n#include <stdio.h>\n#include \"drivers/servo_stm32.h\"\nusing namespace miosix;\n\nint main()\n{\n    SynchronizedServo& servo=SynchronizedServo::instance();\n    servo.enable(0); //Enable channel 0 (connect servo to PB6)\n    servo.start();\n    for(;;)\n    {\n        //This loop will be executed 50 times a second, and be synchronized with the waveform generation\n        servo.waitForCycleBegin();\n        float pos=computeServoPosition();\n        servo.setPosition(0,pos);\n    }\n}\n</source>\n\n== Thread safety considerations ==\n\nThe ''waitForCycleBegin()'' member function can be called by only one thread at a given time, so if you want to control more than one servo, be sure to put all the control code into only one loop. The other member functions are thread safe.\n\n[[Category:API]]"
                    }
                ]
            }
        }
    }
}