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

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

[复制链接]
joe_chen 发布时间:2015-3-11 13:08
本帖最后由 wuwovicky 于 2015-3-11 13:12 编辑
7 W& Y- z* _0 |, `4 Z  {- I! E/ ^" U6 K9 p$ R; n5 x7 W
原因:图一,画PCB时,因为看到PC13离LED比较近,就用PC13来驱动LED,查看手册后,也没说不能驱动LED,所以硬件是可以的。但是在调试软件时发现时钟点亮不了LED,然后在网上找资料,但都是STMF103系列的(PC13最大输出速度不能大于2MHZ,且不能驱动LED)。, V9 C7 [* h( j% o* [$ R
STM32F103系列,当PC14,PC15外接晶振时,好像PC13不能当IO口使用,用过103的人谁帮忙验证下?
' F$ g6 o; w6 N- H
0 W. O0 }% r* U, }7 x5 `; ~我又仔细看了下STM32L的参考手册(RM0038),7.3.15 Selection of RTC_AF1 alternate function章节,可以当IO口使用,于是启动KEIL调试,查看图二所描述的寄存器,
& T+ [/ D# Z# z! Y$ J  z- E! cRTC->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口功能了。) N& ?$ L+ e% J9 \; t5 P

( k% _, O7 F- ?2 z' e1 t! w
# \; B" u# l. L8 W6 vvoid LED_Config(void)
( s9 ?2 ?0 b+ O% ^{
$ {  A. n% [) a, C% V# j   GPIO_InitTypeDef GPIO_InitStructure;        
+ C  o" x5 [' u3 S7 I  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC,ENABLE);0 w. M' ]0 v3 V9 r; ?; N
/* Configure the test LED pin */4 M3 x% l6 o( h& }! S1 ?
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;5 H: n! B3 ]; v9 M( G1 M
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
" [; p& s, u0 T8 a  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;7 m3 S) }$ |( K0 ]
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;1 d& M/ U& t  d$ o
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;9 w$ Z1 s& m% i  J
  GPIO_Init(GPIOC, &GPIO_InitStructure);
' z" }( ~+ w, y: Q}: c, u3 P+ g* L! P& }3 A1 q2 R
% @; B( w" ?. T# J) B4 F

, A- g, K" s$ c& s( K- t" _void RTC_Config(void)
1 d8 G9 N6 a' x' A{( \; L* H% d5 N* M- i$ Z
  /* Enable the PWR clock */
" ^: Y& ?0 V" b6 R0 k# p8 @( y* v# H3 d  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);4 @0 |$ D6 i$ i% X

9 c% W) ~) J1 V6 s2 g+ z: J  /* Allow access to RTC */
* z8 V4 j( B& _; @' |6 ~7 U  PWR_RTCAccessCmd(ENABLE);+ {6 }, l" \; u, X; ]. ]
' i5 R" F- J; c+ [
#if defined (RTC_CLOCK_SOURCE_LSI)  /* LSI used as RTC source clock*/" f0 x: I% [% @
/* The RTC Clock may varies due to LSI frequency dispersion. */
$ v. K. g' Z* k' O  n; D8 o  /* Enable the LSI OSC */ # a- K! M3 Y  ~! N9 F
  RCC_LSICmd(ENABLE);
  o# u  z) e- }! G1 I7 ]" M* u" {% C! h/ u4 g) }& X
  /* Wait till LSI is ready */  
. [4 G8 L* K1 b" F1 y; U, P' |2 a* B# n/ t  while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET)# N) X% R+ J+ V5 W( B  v7 {
  {3 z8 {2 P6 B: U! v! a3 S9 x4 c
  }
% J! Z+ |  I4 m- d; G4 x
( T! U4 G5 b. F  k2 m3 i  x  /* Select the RTC Clock Source */4 V/ T7 q6 L- B8 z
  RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);
, E* |% R$ {- L$ H1 O: i/ J0 v% A& C- a9 o+ B/ A9 Y- i% @
  SynchPrediv = 0xFF;% j$ k! K+ X  O9 ?) j5 \
  AsynchPrediv = 0x7F;8 ~% L. O5 U" A- I

2 F/ |7 i- R% M# x* h& P6 D) A#elif defined (RTC_CLOCK_SOURCE_LSE) /* LSE used as RTC source clock */
; q4 A* J8 l  V7 }" q9 H  /* Enable the LSE OSC */
- q/ Z5 R# i& `5 a% i% }  RCC_LSEConfig(RCC_LSE_ON);
- |$ e4 V$ Q: X& A' @2 W
* C2 Z9 {8 U- J. w, a  /* Wait till LSE is ready */  
6 p7 `5 V3 D+ S2 J1 ~# F  while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
7 n% h3 w$ Z5 `+ }/ D! D& ~3 C  {
. v! P7 H$ b/ S' V( L  }
$ x+ n1 l/ W9 R7 b% ^! g! i: I- N* x4 K9 C# N
  /* Select the RTC Clock Source */
! ?6 j! i9 b; g+ F  RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);- }# Q: B# E$ D5 P* A* N/ Y9 h

, s! b8 [+ V  V, q( w5 Z4 _  SynchPrediv = 0xFF;
8 c7 p: C' Z% G; R; k3 F( L  AsynchPrediv = 0x7F;
: T, |+ y0 Q5 c: L( M; K- i2 r% w+ R9 z
#else
; t( J2 H: {/ m7 a7 D& t# G0 u  #error Please select the RTC Clock source inside the main.c file
1 i" t* s3 f) u( h% {1 b) ?% [! {#endif /* RTC_CLOCK_SOURCE_LSI */
* S2 [! f4 O" }
+ c. [0 q! e* l! j  /* Enable the RTC Clock */
$ R! c& E7 C5 T3 K  RCC_RTCCLKCmd(ENABLE);" m! U0 p% D" L

: A# S  T0 A+ a3 }' l0 ~% m' W7 m  /* Wait for RTC APB registers synchronisation */
$ @2 A: Y. o3 U' z% h$ }  RTC_WaitForSynchro();$ L# w+ t- P* n* G! j
# t3 u, P5 \3 q4 c/ L0 N8 @
  /* Enable The TimeStamp */
' ?8 t% E$ _: F  P: [3 _8 Z# d        RTC_TimeStampCmd(RTC_TimeStampEdge_Rising, DISABLE);  //RTC->CR TSE位清0
2 h2 [/ ^! C& ^. w6 k        RTC_TimeStampCmd(RTC_TimeStampEdge_Falling, DISABLE); //RTC->CR TSE位清0
* l8 g6 c4 p: @}$ u' E/ H" [! M1 g( x6 p( z1 [

5 a% \. x: \% s) j& @8 a' Z' N( x4 _5 P2 _, _& a" P8 I: ~  v
成功点亮LED,并且能够使用RTC
" ~- u# V/ ]& r9 C+ \, F/ i2 S0 d. h2 M9 z, g: o! J* Z
7 ^3 R6 L2 A5 `1 s  L+ h
, f' Z$ f+ E  H* T

图一

图一

图二

图二

图三

图三
赞 收藏 评论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
) @! u# _( d0 I: K( _3 O% p这个板子不错呀,是你做的吗?

  p) j' U- l/ P& O' o! X3 _- `对的,2.4*4.1厘米
joe_chen 回答时间:2015-4-2 13:21:35
zhangdaijin 发表于 2015-3-13 13:335 z* `7 c9 J0 B% g" O
板子不错
0 V0 {0 v, o, l5 f* D' A/ u: J
哈哈,还行~
紫嫣0302 回答时间:2015-10-21 15:52:13
赞一个
永恒heng 回答时间:2016-10-24 11:52:17
mark,正同时使用RCT和PC13驱动三极管

所属标签

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