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

STM32L PC13当IO口使用驱动LED,PC14,PC15外接晶振,且RTC正常...

[复制链接]
joe_chen 发布时间:2015-3-11 13:08
本帖最后由 wuwovicky 于 2015-3-11 13:12 编辑
8 v/ ^' P( F8 p
& e* S' A& m4 h7 T原因:图一,画PCB时,因为看到PC13离LED比较近,就用PC13来驱动LED,查看手册后,也没说不能驱动LED,所以硬件是可以的。但是在调试软件时发现时钟点亮不了LED,然后在网上找资料,但都是STMF103系列的(PC13最大输出速度不能大于2MHZ,且不能驱动LED)。
4 }% i1 M; b9 E" XSTM32F103系列,当PC14,PC15外接晶振时,好像PC13不能当IO口使用,用过103的人谁帮忙验证下?
8 D5 Y" c1 s( g; Z
* F+ ^* l. ^3 t4 Z& j* b4 y我又仔细看了下STM32L的参考手册(RM0038),7.3.15 Selection of RTC_AF1 alternate function章节,可以当IO口使用,于是启动KEIL调试,查看图二所描述的寄存器,' s( k0 z2 j( [1 D8 t" C
RTC->CR OSE位L[1:0] = 00;RTC->CR COE位= 0;  RTC_TAFCR TAMP1E位 = 0; RTC->CR TSE位 = 1; PWR_CS EWUP2 = 0;  对照图二发现RTC->CR TSE位被置一了,对应的功能是时间戳侵入和侵入输入,浮空输入,所以只要将改为置0,就能够使用普通IO口功能了。
- l4 R: Q2 I9 I) i: v+ a
( A2 n/ F* u" |' D
. N( O2 x# _! u2 E8 H* Jvoid LED_Config(void)
! [1 d9 D5 S. m( p0 s3 a  ^/ T{" ]# {- h5 n/ k
   GPIO_InitTypeDef GPIO_InitStructure;        & m6 P% V& I; X" x# u
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC,ENABLE);. Y3 H1 C1 n/ l) s& W+ M
/* Configure the test LED pin */
- k) [) }; K3 s2 P  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;/ Z) \" [' ?1 t& g7 r/ r: I3 O$ s
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
3 C$ u  S1 q* s7 J' M  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;" T7 `/ u) z. K; B$ K% Y
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
5 F3 F0 G9 a$ Q3 S9 x  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;* G: H/ }% y) W3 s* t
  GPIO_Init(GPIOC, &GPIO_InitStructure);
/ c, E! i) e% F4 ]0 c}9 u* H4 b: i8 x6 B
7 S2 p6 ]% F* R

7 w$ q/ h0 k+ mvoid RTC_Config(void)2 o6 b3 k7 X8 `, o) z0 S
{, ]' {: n; m5 |
  /* Enable the PWR clock */
2 r) j- U" C( j8 |  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);  \# r2 W/ F  J& J; c5 x. W; g' l

! }+ Q7 z0 _  x; P0 Z7 `  /* Allow access to RTC */; d. E% A: i# y& }
  PWR_RTCAccessCmd(ENABLE);3 E6 D( ?: h# I4 \

2 O. K' I& O5 Y. L0 a#if defined (RTC_CLOCK_SOURCE_LSI)  /* LSI used as RTC source clock*/" F. S" J5 \2 I+ y# M
/* The RTC Clock may varies due to LSI frequency dispersion. */
) U# c) e3 s9 w4 O3 i' a& d$ u  /* Enable the LSI OSC */ * d7 R' u# t# }" w( L  k5 C' J
  RCC_LSICmd(ENABLE);
6 O# v/ V0 G4 f0 M# A, L, N* {( U' W3 H( t9 O
  /* Wait till LSI is ready */  
4 m, V( j7 c- |! {# [6 z  while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET)
, z; [# B# \: Z" v  {
7 H$ p, y  w. F  }
2 v  h+ y3 ?, M' R4 o
+ Q6 {. e8 A- I* j8 r  /* Select the RTC Clock Source */
4 F" A3 Y$ N. y  RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);' O1 G6 d# S% R1 I
& {+ y4 j  K# ^
  SynchPrediv = 0xFF;
2 a' q1 K% k6 N  AsynchPrediv = 0x7F;
6 ]+ P, k$ ?2 Y3 h- w5 L; W2 N# g" L& I" E
#elif defined (RTC_CLOCK_SOURCE_LSE) /* LSE used as RTC source clock */5 h; T/ L. g2 l- f$ t2 f/ v
  /* Enable the LSE OSC */' d3 P5 u! y1 @( ^* e0 f. q
  RCC_LSEConfig(RCC_LSE_ON);
0 ]; d% A% M& @& |6 j6 I3 a1 l) e; m
  /* Wait till LSE is ready */  
  @$ C6 M9 Q# m; `) M* t( Y  while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
5 B2 J; z. u7 q% U+ C4 ?' ]$ ~  {. w8 E% E' {% m' ~
  }
& ?  M( \4 a6 [
: e7 k' ]8 b* E' _$ e6 o) Z  /* Select the RTC Clock Source */
% m* u' G  B8 k$ S7 \  RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
3 o+ a' v7 p4 R1 V% ]
. H4 x' y3 a0 q5 }* {& H  SynchPrediv = 0xFF;
4 K2 ^3 G. W$ b, p$ c2 J. N  AsynchPrediv = 0x7F;) Y7 \- P; @/ N  H( ^+ u  u

# G  x, B2 H/ I* T2 F6 d#else
- S* n2 _# i7 B. a- o9 }: t  #error Please select the RTC Clock source inside the main.c file
, P0 u( ]6 G/ x) g* u; ?' F#endif /* RTC_CLOCK_SOURCE_LSI */' x* u; \7 N3 ~2 V8 a

& K7 N# f6 b  a4 r2 ]+ b7 b6 j  /* Enable the RTC Clock */
! `# m# }7 O% f  a) w# Y7 O) a  RCC_RTCCLKCmd(ENABLE);
, w5 k8 L5 h9 ~0 k" w: s& `4 J! _; W1 v" q( c9 A
  /* Wait for RTC APB registers synchronisation */
7 o: f) @9 a# a. v$ X" c  RTC_WaitForSynchro();# G! @5 b/ C2 b. s
( P* R2 H% f$ b5 Q: u/ V9 E
  /* Enable The TimeStamp */& `8 c  A3 ]6 z
        RTC_TimeStampCmd(RTC_TimeStampEdge_Rising, DISABLE);  //RTC->CR TSE位清0
& `( Y+ G' i7 O        RTC_TimeStampCmd(RTC_TimeStampEdge_Falling, DISABLE); //RTC->CR TSE位清0- E/ g. A' P4 ~6 ]: l4 y
}0 P) J- o1 ]$ M# ~, c7 J0 m
' u0 Z3 ^: K* f

4 M5 i! V$ \4 P( B9 E3 K3 M成功点亮LED,并且能够使用RTC
: ^  S6 ~% a; D# ~# A: g/ L( `# l# O6 F& t+ w5 X
% A2 ]2 {, F* \

# G7 G4 ]9 P  w0 o

图一

图一

图二

图二

图三

图三
收藏 评论7 发布时间:2015-3-11 13:08

举报

7个回答
拼命三郎 回答时间:2015-3-11 16:43:49
xxxx.png
黄小狼 回答时间:2015-3-12 13:37:53
这个板子不错呀,是你做的吗?
zhangdaijin 回答时间:2015-3-13 13:33:14
板子不错
joe_chen 回答时间:2015-4-2 13:21:03
黄小狼 发表于 2015-3-12 13:37' F1 G, E- Y8 E) P3 l5 ]
这个板子不错呀,是你做的吗?

, D4 w( D# A9 n# n# y3 x对的,2.4*4.1厘米
joe_chen 回答时间:2015-4-2 13:21:35
zhangdaijin 发表于 2015-3-13 13:33& m& ?) k! Z# w' ^9 ?0 J' o$ \+ `1 _3 H
板子不错

* k7 P6 U# q% Y  a( s- E哈哈,还行~
紫嫣0302 回答时间:2015-10-21 15:52:13
赞一个
永恒heng 回答时间:2016-10-24 11:52:17
mark,正同时使用RCT和PC13驱动三极管

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版