| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- /******************************************************************************
- 版权所有:
- 文件名称: pwm.c
- 文件版本: 01.00
- 创建作者:
- 创建日期: 2012-08-7
- 功能说明: pwm模块驱动程序,使用pwm2B
- 其它说明:
- 修改记录:
- */
- /*------------------------------- 头文件 --------------------------------------
- */
- #include "bspconfig.h"
- #include "pwm.h"
- /*------------------------------- 宏定义 --------------------------------------
- */
- #if CFG_BSP_DEBUG
- #define _DEBUG_PWM
- #endif
- #define PWM_PM_REG MCF_PMM_PPMCR1
- #define PWM_PM_INDEX 34
- /*------------------------------ 全局变量 -------------------------------------
- */
- /*------------------------------ 外部函数 -------------------------------------
- */
- /******************************************************************************
- 函数名称: init_pwm0
- 函数版本: 01.00
- 创建作者:
- 创建日期: 2012-08-1
- 函数说明: pwm模块初始化函数
-
- 参数说明: 无
- 返回值: 无
- 修改记录:
- */
- void init_pwm0(void)
- {
- #if 0
- PWM_PM_REG |= PWM_PM_INDEX; //打开PWM模块
-
- MCF_PAD_PAR_SDHCH = MCF_PAD_PAR_SDHCH_PAR_DATA0_PWM_B2; //配置PWMB2管脚
- MCF_PWM_SM2CR1 |= MCF_PWM_SM2CR1_PRSC(7) //128分频
- | MCF_PWM_SM2CR1_LDFQ(0); //Load frequency.
-
- MCF_PWM_SM2CR2 |= MCF_PWM_SM2CR2_CLK_SEL(0) //选择外部总线时钟
- | MCF_PWM_SM2CR2_FORCE //counter初始化值为init的
- | MCF_PWM_SM2CR2_FORCE_SEL(2) //从子模块本地重载信号
- | MCF_PWM_SM2CR2_INIT_SEL(0); //Local sync初始化
-
- MCF_PWM_SM2INIT = MCF_PWM_SM2INIT_INIT(0x0000); //最低点
-
- MCF_PWM_SM2VAL1 = MCF_PWM_SM2VAL1_VAL1(0x7A1); //最高点
-
- MCF_PWM_SM2VAL4 = MCF_PWM_SM2VAL4_VAL4(0x28B); //上升沿
-
- MCF_PWM_SM2VAL5 = MCF_PWM_SM2VAL5_VAL5(0x65B); //下降沿
-
- MCF_PWM_MCR |= MCF_PWM_MCR_IPOL(4) //选择45值寄存器
- | MCF_PWM_MCR_LDOK(4); //允许载入
-
- MCF_PWM_OUTEN |= MCF_PWM_OUTEN_PWMB_EN(4); //允许输出波形
- #endif
- }
- /******************************************************************************
- 函数名称: pwm0On
- 函数版本: 01.00
- 创建作者:
- 创建日期: 2012-08-1
- 函数说明: 打开pwm
- 参数说明:
-
- 返回值: 无
- 修改记录:
- */
- static void pwm0On(void)
- {
- // MCF_PAD_PAR_SDHCH = 0x2; //PWMB2用于PWM输出
- // MCF_PWM_MCR |= MCF_PWM_MCR_RUN(4); // 使能PWM2
- }
- /******************************************************************************
- 函数名称: pwm0Off
- 函数版本: 01.00
- 创建作者:
- 创建日期: 2012-08-1
- 函数说明: 关闭pwm
- 参数说明:
-
- 返回值: 无
- 修改记录:
- */
- static void pwm0Off(void)
- {
- // MCF_PWM_MCR |= MCF_PWM_MCR_RUN(0); // 屏蔽PWM2
- // MCF_PAD_PAR_SDHCH = 0; //PWMB2用于GPIO输出
- }
- /*------------------------------ 测试函数 -------------------------------------
- */
- #ifdef _DEBUG_PWM
- #include "ustimer.h"
- #include "rt.h"
- void pwm_test(void)
- {
- init_pwm0();
-
- while(1)
- {
- rt_printf("PWM test start!\n\r");
- rt_printf("\n\r");
-
- pwm0On();
- ustimer_delay(1*USTIMER_SEC);
- pwm0Off();
-
- rt_printf("\n\r");
- rt_printf("PWM test end!\n\r");
- rt_printf("\n\r");
- rt_printf("\n\r");
- ustimer_delay(2*USTIMER_SEC);
- }
- }
- #endif
- /*------------------------------ 文件结束 -------------------------------------
- */
|