Committer:
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4
Date:
Tue Jun 14 09:21:18 2022 +0000
Revision:
0:bdf663c61a82
lib

Who changed what in which revision?

UserRevisionLine numberNew contents of line
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 1
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 2 /** \addtogroup hal */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 3 /** @{*/
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 4 /* mbed Microcontroller Library
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 5 * Copyright (c) 2006-2013 ARM Limited
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 6 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 7 * Licensed under the Apache License, Version 2.0 (the "License");
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 8 * you may not use this file except in compliance with the License.
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 9 * You may obtain a copy of the License at
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 10 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 11 * http://www.apache.org/licenses/LICENSE-2.0
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 12 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 13 * Unless required by applicable law or agreed to in writing, software
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 14 * distributed under the License is distributed on an "AS IS" BASIS,
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 16 * See the License for the specific language governing permissions and
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 17 * limitations under the License.
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 18 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 19 #ifndef MBED_PWMOUT_API_H
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 20 #define MBED_PWMOUT_API_H
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 21
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 22 #include "device.h"
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 23
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 24 #if DEVICE_PWMOUT
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 25
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 26 #ifdef __cplusplus
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 27 extern "C" {
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 28 #endif
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 29
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 30 /** Pwmout hal structure. pwmout_s is declared in the target's hal
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 31 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 32 typedef struct pwmout_s pwmout_t;
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 33
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 34 /**
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 35 * \defgroup hal_pwmout Pwmout hal functions
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 36 * @{
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 37 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 38
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 39 /** Initialize the pwm out peripheral and configure the pin
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 40 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 41 * @param obj The pwmout object to initialize
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 42 * @param pin The pwmout pin to initialize
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 43 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 44 void pwmout_init(pwmout_t *obj, PinName pin);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 45
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 46 /** Deinitialize the pwmout object
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 47 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 48 * @param obj The pwmout object
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 49 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 50 void pwmout_free(pwmout_t *obj);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 51
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 52 /** Set the output duty-cycle in range <0.0f, 1.0f>
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 53 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 54 * Value 0.0f represents 0 percentage, 1.0f represents 100 percent.
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 55 * @param obj The pwmout object
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 56 * @param percent The floating-point percentage number
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 57 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 58 void pwmout_write(pwmout_t *obj, float percent);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 59
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 60 /** Read the current float-point output duty-cycle
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 61 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 62 * @param obj The pwmout object
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 63 * @return A floating-point output duty-cycle
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 64 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 65 float pwmout_read(pwmout_t *obj);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 66
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 67 /** Set the PWM period specified in seconds, keeping the duty cycle the same
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 68 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 69 * Periods smaller than microseconds (the lowest resolution) are set to zero.
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 70 * @param obj The pwmout object
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 71 * @param seconds The floating-point seconds period
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 72 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 73 void pwmout_period(pwmout_t *obj, float seconds);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 74
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 75 /** Set the PWM period specified in miliseconds, keeping the duty cycle the same
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 76 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 77 * @param obj The pwmout object
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 78 * @param ms The milisecond period
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 79 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 80 void pwmout_period_ms(pwmout_t *obj, int ms);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 81
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 82 /** Set the PWM period specified in microseconds, keeping the duty cycle the same
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 83 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 84 * @param obj The pwmout object
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 85 * @param us The microsecond period
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 86 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 87 void pwmout_period_us(pwmout_t *obj, int us);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 88
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 89 /** Set the PWM pulsewidth specified in seconds, keeping the period the same.
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 90 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 91 * @param obj The pwmout object
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 92 * @param seconds The floating-point pulsewidth in seconds
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 93 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 94 void pwmout_pulsewidth(pwmout_t *obj, float seconds);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 95
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 96 /** Set the PWM pulsewidth specified in miliseconds, keeping the period the same.
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 97 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 98 * @param obj The pwmout object
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 99 * @param ms The floating-point pulsewidth in miliseconds
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 100 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 101 void pwmout_pulsewidth_ms(pwmout_t *obj, int ms);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 102
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 103 /** Set the PWM pulsewidth specified in microseconds, keeping the period the same.
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 104 *
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 105 * @param obj The pwmout object
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 106 * @param us The floating-point pulsewidth in microseconds
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 107 */
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 108 void pwmout_pulsewidth_us(pwmout_t *obj, int us);
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 109
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 110 /**@}*/
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 111
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 112 #ifdef __cplusplus
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 113 }
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 114 #endif
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 115
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 116 #endif
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 117
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 118 #endif
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 119
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 120 /** @}*/
abe5b02d-a2d4-4fe9-818e-c4e57c809ea4 0:bdf663c61a82 121