CC26xx PWM
来源:互联网 发布:日本软件下载网站 编辑:程序博客网 时间:2024/06/09 14:36
CC26xx PWM使用定时做的,请查看下面代码分析。
#ifndef EXCLUDE_IO/* -----------------------------------------------------------------------------* Includes* ------------------------------------------------------------------------------*/// TI RTOS drivers#include <ti/drivers/Power.h>#include <ti/drivers/power/PowerCC26XX.h>// Temporary PWM solution directly on DriverLib// (until a Timer RTOS driver is in place)#include <ti/drivers/pin/PINCC26XX.h>#include <driverLib/timer.h>#include "sensortag_buzzer.h"/* -----------------------------------------------------------------------------* Local variables* ------------------------------------------------------------------------------*/static PIN_Handle hPin = NULL;/* -----------------------------------------------------------------------------* Public Functions* ------------------------------------------------------------------------------*//******************************************************************************* * @fn SensorTagBuzzer_open * * @brief Initialize the Buzzer * * @descr Initializes pin and PWM * * @return - */void SensorTagBuzzer_open(PIN_Handle hGpioPin){ hPin = hGpioPin; // Turn on PERIPH power domain and clock for GPT0 and GPIO Power_setDependency(PowerCC26XX_PERIPH_GPT0); Power_setConstraint(PowerCC26XX_SB_DISALLOW); // Assign GPT0 TimerConfigure(GPT0_BASE, TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_PWM); // Configure pin for PWM output PINCC26XX_setMux(hPin, Board_BUZZER, IOC_PORT_MCU_PORT_EVENT0);}/******************************************************************************* * @fn SensorTagBuzzer_setFrequency * * @brief Set the frequency (3Hz - 8 KHz) * * @return return true if the frequency is within range */bool SensorTagBuzzer_setFrequency(uint16_t freq){ uint32_t ticks; uint32_t loadLow; uint32_t loadHigh; uint32_t matchLow; uint32_t matchHigh; if (hPin == NULL) { // Make sure the pin is not used when not open return false; } if (freq < BUZZER_FREQ_MIN && freq > BUZZER_FREQ_MAX) { return false; } // Stop timer during reconfiguration TimerDisable(GPT0_BASE, TIMER_A); // Calculate timer load and match values ticks = 48000000 / freq; loadLow = ticks & 0x0000FFFF; loadHigh = (ticks & 0x00FF0000) >> 16; matchLow = (ticks / 2) & 0x0000FFFF; matchHigh = ((ticks / 2) & 0x00FF0000) >> 16; // Set timer load TimerLoadSet(GPT0_BASE, TIMER_A, loadLow); TimerPrescaleSet(GPT0_BASE, TIMER_A, loadHigh); // Set timer match TimerMatchSet(GPT0_BASE, TIMER_BOTH, matchLow); TimerPrescaleMatchSet(GPT0_BASE, TIMER_A, matchHigh); // Start timer TimerEnable(GPT0_BASE, TIMER_A); return true;}/******************************************************************************* * @fn SensorTagBuzzer_close * * @brief Closes the buzzer interface * * @return - */void SensorTagBuzzer_close(void){ if (hPin != NULL) { // Configure pin as GPIO PINCC26XX_setMux(hPin, Board_BUZZER, IOC_PORT_GPIO); // Turn off PERIPH power domain and clock for GPT0 Power_releaseDependency(PowerCC26XX_PERIPH_GPT0); Power_releaseConstraint(PowerCC26XX_SB_DISALLOW); hPin = NULL; }}#endif // EXCLUDE_IO
阅读全文
0 0
- CC26xx PWM
- CC26XX SBL
- CC26xx SPI
- CC26xx I2S
- PWM
- PWM
- pwm
- PWM?
- PWM
- PWM
- PWM
- PWM
- PWM
- PWM
- PWM
- PWM
- PWM
- PWM
- mysql中left join right join inner join用法
- django views中 request, response的常用操作
- Codeforces Round #422 (Div. 2) C. Hacker, pack your bags! 思维排序或二分
- Ajax初步总结
- oracle重建OEM(dbconsole)
- CC26xx PWM
- Android Studio 查找该类的所有成员方法函数与成员变量的快捷键
- Java----异常类(错误和异常,两者区别)
- 【copy】利用poi将数据库数据导出excel
- POJ1655 Balancing Act
- ubuntu 16.04安装 sublime text 汉化 输入法
- Pycharm教程(4)——有关Python解释器的相关配置
- Ubuntu 启动桌面失败
- 使用GitLab版本管理工具教程