你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32基于TIM1的比较输出

[复制链接]
ST老少女 发布时间:2008-12-2 14:32
以下为源代码,CC1进行比较输出,模式为翻转电平.
2 u" ^' S5 ]" o' j6 q( [1 U$ F1 p
程序运行后,CC中断可以进去,PA.11的指示灯能闪,但PA.08的指示一直为低电平,请教一下程序哪里错了???
7 ?/ {% q& T3 ~. S
# B3 J! c7 \$ @void TIM1_CC_Init(void)# `0 `( L! d5 I! t$ W0 u$ G
{     7 v/ t& N% N# ~5 z7 _9 H
NVIC_InitTypeDef NVIC_InitStructure;  
1 X: B- n3 m: {GPIO_InitTypeDef GPIO_InitStructure;  ) z' t1 t! m. K4 j) X2 Z; O+ \* u- u

5 Q! u; B0 Z" x9 [/* 使能定时器 TIM1_CC 中断 */! z" R: K  A9 T. K- }
NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQChannel;3 `5 {! B) I! E9 r& \: \. K3 [
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;! A3 s) W' t% C/ M
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
0 J& |% Z. G/ W) L4 n- ^) c7 INVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
& P. B9 J: u3 ?' _NVIC_Init(&NVIC_InitStructure);
# D* u: b# I4 H9 Q3 }; E* A1 a/ l8 x# L( `
/* 配置 PA.11 为推挽输出 */
. z) E* w% q2 @. L$ hGPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
* B% C8 U$ ^2 ]( n) J7 |GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
' T) S  G1 {. l" M5 M) {GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; . ]8 u9 l) I/ {5 f/ L; q
GPIO_Init(GPIOA, &GPIO_InitStructure);* v  V1 C6 A4 K
         
* k1 s0 }1 C) ]" SGPIOA->BSRR = GPIO_Pin_11; // 将PA.08配置为高电平
5 _8 C. C) W9 S) W
2 M& z1 y# c5 R/* 配置 PA.08 为复用推挽输出 */
* b9 A: `; y2 E4 w. }& GGPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; 9 ^# ^# B5 a6 A1 _, N8 C1 d5 \( v5 `
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
+ e0 f; s) [6 W6 r/ m- JGPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; ) o, ^% q4 Q2 s8 K* f
GPIO_Init(GPIOA, &GPIO_InitStructure);( m) d8 X3 m" w; H
2 [# p6 c7 d5 p; i  u
/* 预分频自动重载寄存器 */) T, A, f5 Y. w0 P5 x+ ~
TIM1->ARR   = 0x2FFF;   + m5 t( P0 V6 A9 q/ r- U
/* PSC 预分频器:计数频率 = CK_PSC /(PSC + 1) */
4 [! V* \5 G) `! d' P  P( _TIM1->PSC   = 0xFF;               
# h1 S8 p$ ~& o: s/* CCR1 捕获比较值寄存器 */             , K- z/ @7 y6 z, U! r1 x
TIM1->CCR1  = 0xFFF;    8 z$ ?4 P$ U6 `9 ]9 _! ]% ~8 k
/* 循环计数器的寄存器(控制更新事件) */* o2 A$ b# V. l1 v
TIM1->RCR   = 0x00;   // 每次更新   
5 U- e& Z2 W$ C+ q7 {/* 捕获/比较模式寄存器 */2 |* ~9 M, P% I0 h, ?; Y
TIM1->CCMR1 = 0x30;   // CC1为输出,CCR1立即生效,输出翻转.    4 T7 x5 h1 f- w' U% }
/* 捕获/比较使能寄存器 */ ! v7 [( v' b) N8 R7 [1 y
TIM1->CCER  = 0x03;   // 开启CC1输出,反向输出 2 j/ y  t; }* {8 K) Y* A
/* 中断使能寄存器 */, \" R7 E# o2 o
TIM1->DIER  = 0x02;   // 使能 CC1 中断     ) x( e. t# Z7 T3 _
/* 控制寄存器1 */2 |( }$ G/ b' O* h3 V- p* b
TIM1->CR1   = 0x01;   // 使能计数器(向上计数)
; X; N; ?1 r6 @6 U# y$ q}, n! w: f. G- }) w7 {% k
   
% m3 {7 V! ~# B8 P8 N/***************************************************************************************
4 P1 O& j# D' |) S** 函数名称: TIM1_CC_IRQHandler- N0 ]% O0 I4 h6 k5 K7 c7 Z
** 功能描述: CC 中断8 f! b/ A( r( e6 T
** 参    数: None
9 Q( ~/ |3 T9 _9 ^** 返 回 值: None         g( _# f% @5 i# h  A- m
****************************************************************************************/
2 |  u( M1 b) U; r& q- Z# j# \' ~void TIM1_CC_IRQHandler(void)
2 l& D& ]2 q/ L) Y) \{
4 b" V  w  z# @+ T7 s1 T8 Xstatic uint32 counter = 0;
" U9 F" W& ^; P* ~            
; j  V. V% U! @( g7 F/ CTIM1->SR &= ~2; // 清除中断标志(不做判断提高效率)
/ @2 u* ?- n- C3 f( q6 w' h0 M: |3 }& T$ `( q0 U. y
if(counter)& H, B' H4 A' l! n
{4 U% S; j7 U. m( L+ h5 n) [4 r
  counter = 0;
) f* E" q: J. ~, F9 u" x& @  GPIOA->BSRR = GPIO_Pin_11;6 g( d8 \  u7 Y
}3 E5 o8 }& F, w4 x+ s  W
else
1 k, W* r- s. Y( `2 g{  
, I* L- D( N" S( N2 Q  counter = 1;
; [- o, M+ N. I! z. B. X  GPIOA->BRR = GPIO_Pin_11;
! U+ o- P: K! B}# Z, i5 K( e/ z
}
赞 收藏 评论3 发布时间:2008-12-2 14:32

举报

3个回答
得蜜 回答时间:2008-12-2 14:33:45

RE:STM32基于TIM1的比较输出

  {2 S, b0 R8 a5 f( j$ W4 y
找到问题,没有打开主输出.../ B: b9 c) f, o5 z3 b' X
/* 打断和死区控制器 */
* H& p& Z7 }2 x" VTIM1->BDTR  = 0x8000;                // 主输出使能(MOE)        
7 g7 Z5 \+ g9 D% M8 V加这句就可以了.
ST老少女 回答时间:2008-12-2 14:34:52

RE:STM32基于TIM1的比较输出

谢谢
can-39743 回答时间:2012-3-30 12:34:27

RE:STM32基于TIM1的比较输出

你好,楼主," [% g# v  K- v* j% A8 n- T& ^
我刚接触到STM32F103这款芯片,同时也要使用TIM1高级时钟这个模块,主要是用来控制电机,但发现互初输出的PWM信号的占空比不正确,譬如:软件中设置的占人比为20%,但实际输出才有16%,其它的占空比都是一样,存在误差!
, c: E% J7 ^/ C% p0 Z' i) A- fps:我的PWM信号频率为20KHZ,死区时间:2us,中心对齐,下溢中断: j2 T; D2 t0 W* k8 l3 ^/ Z- a
谢谢

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版