标题: 请问一下怎么产生PWM波 [打印本页] 作者: 浙江第一帅 时间: 2018-10-30 16:46 标题: 请问一下怎么产生PWM波 请问一下怎么产生PWM波,我看用户手册里只有ECAP_APWM波的,请问怎么修改程序,可以变成产生pwm波???谢谢大家) `- @, Q( l# }7 | 作者: 浙江第一帅 时间: 2018-10-30 17:00
/****************************************************************************/ " H5 m1 g6 t4 h F5 y/* */ " G2 B& N, @9 ~7 o, T0 ]8 z/* 宏定义 */ F3 x z4 F6 e* A- Y/* */) V3 A# r4 p5 K# C5 Z* K4 c
/****************************************************************************/, H% j& a( ^+ w" \% y. e$ O
// 软件断点( z) n) q# C+ V6 O
#define SW_BREAKPOINT asm(" SWBP 0 "); 8 X! M* W: D8 p. e7 d ! u5 e! t* d4 P# y8 A. s! N// 时钟分频( J& V3 ?: _6 _! c3 Q+ i2 b1 ^
#define CLOCK_DIV_VAL 228) R @' z' y- J' b/ x; B+ T
0 q0 j9 G r) K& q/****************************************************************************/ + Q, s }& V' {/* */9 Z! |9 j, E* F, } q7 N' z
/* 全局变量 */1 }$ N' B+ r# `& W" H
/* */6 v' \/ m- p. H Q( ~1 L
/****************************************************************************/+ J. O7 p K/ [4 X9 q
ECAPCONTEXT ECAPResult;5 c0 G; b! |* Q8 `) z5 d1 d% L
+ M+ H) h2 _( Y, L$ O$ T! D/****************************************************************************/ 2 b. P! Q9 F1 k$ [0 S% U* y: U/* */; F, G+ ^6 p" t! b
/* 函数声明 */ 8 L% H& ^4 q6 Y, o$ y/* */ 4 r0 _( J$ o8 X" y4 q4 P/****************************************************************************/ 0 v* }$ `+ n0 X3 b3 a( k( g// 外设使能配置 9 Y3 m7 d( F2 ^5 S3 g/ S% ~5 yvoid PSCInit(void); i: s e0 N# w9 h, K' W # O! [1 P1 f- n1 z& R' ]* r// GPIO 管脚复用配置4 N& _5 L6 L" a0 H, k8 _8 b. i$ N
void GPIOBankPinMuxSet();6 b" ?2 u6 {. r1 U; a
. S# z0 Q( @ `! D0 L5 ]9 q) H" A9 [
// 产生波形5 H" E- f0 \1 E# q
void PWM1ABasic(unsigned int pwm_clk,unsigned short duty_ratio);& F. T3 W# r. Y( h5 K
void ChopperWaveform(void);' L, O& b) [6 N' Q7 \6 e, z$ ^$ z1 p$ w
8 Q1 e3 i: s O& Q# L// ECAP初始化和读函数& g. F' K# F. p! O4 Z' e
void ECAPInit(void);" G+ H3 {* l" ?# K
unsigned int ECAPRead(void); : \( K$ C2 p3 U, x4 ]" g+ M8 C |; P+ O3 K6 k# _( t6 O7 `% A
//ARM 中断初始化 # I' F; i4 \1 a( D; j2 ]( Avoid InterruptInit(void); 5 m, P5 i" ~+ Y. C) E. J $ }6 ] g8 j3 U// PWM 中断初始化+ x& E# v: g' K5 q# j3 D
void PWMInterruptInit(void);1 Q$ |( h3 ~0 i& F3 O
// 中断服务函数 + v7 u" [$ s4 h' l; x: H7 q# S// PWM 事件 - p6 K' U9 m* l4 f* \% K0 jvoid PWMEventIsr(void); ! R, `8 Y' E, b) ~/ H// PWM 错误控制事件 & q8 l8 c) _/ i* @& a' evoid PWMTZIsr(void); t2 b6 a j9 t) p
. k4 _: Y" B' `( D4 W1 N
/****************************************************************************/2 ]9 ]$ f9 p& U& N8 M
/* *// _+ V8 x c# y4 g9 U
/* 主函数 */ & g4 b" Z, l+ V. \ {4 C/* */ & q! @- O3 }: p, @0 b' J0 G ~/****************************************************************************/# U& [, \$ v" p+ N& M) g
int main(void)' C* V ^; f0 @! y! w1 d8 d
{ 2 W; _0 ?% A4 m3 J) x: q // 外设使能配置3 x9 o, n& E, M2 }- t; u
PSCInit();. {/ Z( }7 f3 v
0 L/ s+ f( j: w+ X // 初始化串口终端 使用串口2 8 y/ @3 Z5 Q% p. i4 X( z. c UARTStdioInit();$ \ G3 j* K* E5 G9 t. H