嵌入式PWM模块驱动调速电机C程序_第1页
嵌入式PWM模块驱动调速电机C程序_第2页
嵌入式PWM模块驱动调速电机C程序_第3页
嵌入式PWM模块驱动调速电机C程序_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include unsigned long thesysclock=12000000ul; #includelcdinit.h #define pb0_pwm2 gpio_pin_0 /pwm2 、产生正转信号#define pb1_pwm3 gpio_pin_1 /pwm3 、产生反转信号#define key_periph sysctl_periph_gpioc #define key_port gpio_portc_base #define key1_pin gpio_pin_4 /正反转切换#define key2_pin gpio_pin_5 /2 档#define key3_pi

2、n gpio_pin_6 /1 档#define key4_pin gpio_pin_7 /制动unsigned int flag,value,d,s; /*/ void clockinit(void) sysctlldoset(sysctl_ldo_2_50v); / 设置 ldo 输出电压sysctlclockset(sysctl_use_osc | / 系统时钟设置sysctl_osc_main | / 采用主振荡器sysctl_xtal_6mhz | / 外接 6mhz 晶振sysctl_sysdiv_1); / 不分频thesysclock = sysctlclockget(); /

3、 获取当前的系统时钟频率 void gpio_port_c_isr(void) unsigned long ulstatus; ulstatus = gpiopinintstatus(gpio_portc_base, true); / 读取中断状态gpiopinintclear(gpio_portc_base, ulstatus); / 清除中断状态,重要if (ulstatus & key1_pin) / 如果 pc4 的中断状态有效 sysctldelay(200); /消除按键抖动flag=flag; if (ulstatus & key2_pin) / 如果 pc5 的

4、中断状态有效 sysctldelay(200); value=50; s=2; /s=2 表示高速 if (ulstatus & key3_pin) / 如果 pc6 的中断状态有效 sysctldelay(200); value=200; s=1; /s=1 表示低速 if (ulstatus & key4_pin) / 如果 pc7 的中断状态有效 sysctldelay(200); value=300; s=0; /s=0 表示制动 /*/ void lcd_disp() lcd_pos(0,0); lcd_strwdat(direct is:); /第一行显示正反转lc

5、d_pos(0,14); lcd_write(1,d); /lcd 写数据lcd_pos(1,0); lcd_strwdat(now speed is:);/ 第二行显示转速的档位lcd_pos(1,14); lcd_write(1,s); /lcd 写数据 void flag_1() /反转 pwmoutputstate(pwm_base, pwm_out_3_bit, true); pwmoutputstate(pwm_base, pwm_out_2_bit, false); /使能或禁止pwm 的输出pwmgenperiodset(pwm_base, pwm_gen_1, 300); /

6、 设置 pwm 发生器 1的周期pwmpulsewidthset(pwm_base, pwm_out_3, value); / 设置 pwm2 输出的脉冲宽度d=0; /d=0 表示反转 void flag_0() pwmoutputstate(pwm_base, pwm_out_2_bit, true); /正转pwmoutputstate(pwm_base, pwm_out_3_bit, false); pwmgenperiodset(pwm_base, pwm_gen_1, 300); / 设置 pwm 发生器 1的周期pwmpulsewidthset(pwm_base, pwm_out

7、_2, value); / 设置 pwm3 输出的脉冲宽度d=1; /d=1 表示正转 /*/ int main (void) lcd_init(); clockinit(); sysctlperipheralenable (key_periph); / 使能 key 所在的 gpio 端口gpiopintypegpioinput(key_port, key1_pin|key2_pin|key3_pin|key4_pin); / 设置 key1、key2、key3、key4 为输入gpiointtypeset(key_port, key1_pin|key2_pin|key3_pin|key4_

8、pin, gpio_low_level); / 设置 key1 、 key2 、 key3 、 key4管脚的中断类型gpiopinintenable(key_port, key1_pin|key2_pin|key3_pin|key4_pin); / 使能 key1 、 key2 、 key3 、 key4所在管脚的中断intenable(int_gpioc); / 使能 gpioc 端口中断sysctlperipheralenable(sysctl_periph_gpiob); / 使能 pwm2 和 pwm3 输出所在 gpio sysctlperipheralenable(sysctl_

9、periph_pwm); / 使能 pwm 模块sysctlpwmclockset(sysctl_pwmdiv_1); / pwm 时钟配置:不分频gpiopintypepwm(gpio_portb_base, pb0_pwm2); / pb0配 置 为pwm 功能gpiopintypepwm(gpio_portb_base, pb1_pwm3); / pb1配 置 为pwm 功能pwmgenconfigure(pwm_base, pwm_gen_1, / 配置pwm发生器1:加减计数pwm_gen_mode_up_down | pwm_gen_mode_no_sync); pwmoutputstate(pwm_base, pwm_out_2_bit, true); /初始化时flag=0、即电机初始化时是正转pwmoutputstate(pwm_base, pwm_out_3_bit, false); pwmgenperiodset(pwm_base, pwm_gen_1, 300); / 设置 pwm 发生器 1的周期pwmpulsewidthset(pwm_base, pwm_out_2, value); / 设置 pwm3 输出的脉冲宽度pwmgenenabl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论