找回密码
 注册
关于网站域名变更的通知
查看: 156|回复: 3
打印 上一主题 下一主题

STC32G单片机编码器模式

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-6-21 09:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
有没人测试过STC32G单片机的编码器模式。- i& U- z2 a% z( J! z/ u. Z5 I
1.例程 中 P1口选择P1.0 ,P1.2 ,STC32G 没有P1.2   。这么郁闷的事也有。
6 |, B5 [! ?  J3 h2.换到P2 口也没反应。
4 m( _7 N3 s0 Q( W( ~3.找到STC8H的编码器历程也不能用。
; F& G1 u/ Z% N) ^" V6 b
, I  U  D0 F7 m9 M0 N9 V. U下面是STC8H编码器模式历程:
, }3 q, W5 z) s8 [) T#include "reg51.h"0 {  w+ G6 y9 I, N) h3 s0 ~% E2 h
#include "intrins.h"
) A2 m, i" _' T& z# e2 n7 x
0 ^% b0 q7 t$ C& S+ ntypedef struct TIM1_struct1 o- K- k0 j# z6 _4 ~. c
{# C  o6 b" v" }& H% g
    volatile unsigned char CR1;     /*!< control register 1 */
8 V$ `' N; m! e) t' B$ l+ S$ o    volatile unsigned char CR2;     /*!< control register 2 */  W+ x; H9 x7 J+ y/ n# ]( t
    volatile unsigned char SMCR;    /*!< Synchro mode control register */$ X9 F& [- Z% j3 J5 q3 t* U! ^4 \5 u: J
    volatile unsigned char ETR;     /*!< external trigger register */9 j+ I. u6 \& F( A$ r' |. F
    volatile unsigned char IER;     /*!< interrupt enable register*/
* }8 k& {  q' V0 P7 A  w6 w. i    volatile unsigned char SR1;     /*!< status register 1 */( g- u4 Y* J0 u) {5 t
    volatile unsigned char SR2;     /*!< status register 2 */
: \% ?- [, ~' V! H3 \6 u4 s1 ^6 {    volatile unsigned char EGR;     /*!< event generation register */
& k, G. }( b1 \5 d. b4 k- U/ d: [( K    volatile unsigned char CCMR1;   /*!< CC mode register 1 */; }' j  O8 Q9 j6 [- z+ q7 {
    volatile unsigned char CCMR2;   /*!< CC mode register 2 */8 V& I  H+ j5 |6 D& @
    volatile unsigned char CCMR3;   /*!< CC mode register 3 */
% C5 E: O: T% m$ R7 N. U    volatile unsigned char CCMR4;   /*!< CC mode register 4 */4 v% T3 u8 Q6 ~5 _. W+ U1 \3 D
    volatile unsigned char CCER1;   /*!< CC enable register 1 */
6 U: M. \! e  n    volatile unsigned char CCER2;   /*!< CC enable register 2 */* P/ J; D) A* j
    volatile unsigned char CNTRH;   /*!< counter high */
+ S- j0 k* L) O9 p3 j; J    volatile unsigned char CNTRL;   /*!< counter low */
3 P5 U$ Z- H8 Q7 C    volatile unsigned char PSCRH;   /*!< prescaler high */
6 T; t6 M- h8 C* u6 v    volatile unsigned char PSCRL;   /*!< prescaler low */. B+ \- W" o1 Z  g( v" ?
    volatile unsigned char ARRH;    /*!< auto-reload register high */' M" g8 Z( F$ A, \8 n8 z( I, m2 h
    volatile unsigned char ARRL;    /*!< auto-reload register low */
. h" W" q; W1 l    volatile unsigned char RCR;     /*!< Repetition Counter register */
2 `0 n. X* h4 p+ r    volatile unsigned char CCR1H;   /*!< capture/compare register 1 high */
/ u* ~8 T  [4 B# E    volatile unsigned char CCR1L;   /*!< capture/compare register 1 low */
1 v& Q9 P' B# B( \, l    volatile unsigned char CCR2H;   /*!< capture/compare register 2 high */
' j0 e! m6 w. c( R! E9 }    volatile unsigned char CCR2L;   /*!< capture/compare register 2 low */
! W9 I3 _( D) z+ Y4 W0 V    volatile unsigned char CCR3H;   /*!< capture/compare register 3 high */
& I1 @8 L; V9 u2 z    volatile unsigned char CCR3L;   /*!< capture/compare register 3 low */
8 a9 i! p( Q" h( r7 F! q8 m5 g    volatile unsigned char CCR4H;   /*!< capture/compare register 3 high */6 w& X$ e9 w: ]4 O4 Q1 T$ V
    volatile unsigned char CCR4L;   /*!< capture/compare register 3 low */
2 C+ O; I/ U  p3 w, }    volatile unsigned char BKR;     /*!< Break Register */) a% M5 w5 P. ]* Q1 y- T+ l
    volatile unsigned char DTR;     /*!< dead-time register */
6 p  C# U9 S: o* z; b: J$ n7 t    volatile unsigned char OISR;    /*!< Output idle register */+ W7 e/ B, x4 D3 K- w7 u* ?( n* ]
}TIM1_TypeDef;) k, t9 I( J  W: {. ~7 [

( s- i( J- g8 V9 z#define TIM1_BaseAddress    0xFEC0
0 w* i( c( ~( Q& U; T* m) Z  q2 y9 C: C- L6 i
#define TIM1        ((TIM1_TypeDef xdata*)TIM1_BaseAddress)* X0 b; I9 Y+ J5 w
#define PWMA_ENO    (*(unsigned char volatile xdata *)0xFEB1)
4 |: \* g9 {: q#define PWMA_PS     (*(unsigned char volatile xdata *)0xFEB2)5 O0 c% ?) g; C, Y7 o
. X9 D* o. \5 c, s0 l1 Q! `4 f
sfr     P0M0    =   0x94;
$ ]# d$ {# h& ^. F- D+ Z( e, Z5 Rsfr     P0M1    =   0x93;
" _: `2 a1 V8 i4 B* `3 W8 Psfr     P1M0    =   0x92;
" R5 ^, }) J3 q0 ~% ?: h4 {sfr     P1M1    =   0x91;
  K" b& d$ f; O# ysfr     P_SW2   =   0xba;, W1 W' X5 g, }0 Z+ ?/ @% ]

0 `! w7 f4 J/ a& xsbit    P03     =   P0^3;
/ M- }2 G: Y/ H0 h$ `2 f7 o/ J6 H  x6 C
unsigned char cnt_H, cnt_L;- E% ]$ J$ Q5 C; x

$ [8 Q$ [2 P# `( U4 Uvoid main(void)9 Q( t8 a3 J. K, u& N
{
5 D! l( k# o6 {- J. f    P_SW2 = 0x80;
8 V9 x: I; @) i' D
2 e+ ]8 k. T% F' b  v9 H+ d    P1M1 = 0x0f;
; Y4 c3 d8 W4 a, c    P1M0 = 0x00;
( E2 C- _8 A5 e/ ^3 o
9 v! @4 z0 H5 M    PWMA_ENO = 0x00;                            //配置成TRGI 的pin需关掉ENO对应bit并配成input, w7 S, t$ L/ ?/ f% Z0 q) m# u
    PWMA_PS = 0x00;                             //00WM at P1
' A+ _5 P& W9 B& N6 g
/ [4 m) o/ H4 _. I+ W1 G    TIM1-> PSCRH = 0x00;                        //预分频寄存器, d4 @/ \6 _0 o( g, u* C1 T! l
    TIM1-> PSCRL = 0x00;, L* x/ |, K' b2 g# ?: ^

8 N& ?. G: j7 T    TIM1-> CCMR1  = 0x21;                       //通道模式配置为输入,接编码器,滤波器4时钟4 E0 O; E/ T; [: p+ k
    TIM1-> CCMR2  = 0x21;                       //通道模式配置为输入,接编码器,滤波器4时钟
7 u7 \: m5 O' E5 S6 u) E8 G% \& Q1 B5 M' r
    TIM1-> SMCR   = 0x03;                       //编码器模式3( U$ V; @, W  T. X% C
) z6 ~/ i5 X* l1 |6 _7 o
    TIM1-> CCER1  = 0x55;                       //配置通道使能和极性
3 n! z; Y. _% @/ }; [    TIM1-> CCER2  = 0x55;                       //配置通道使能和极性2 M) ]" U, E$ r! k+ d6 {
9 t) o, X4 s$ U- B% K8 Z1 J/ [$ c
    TIM1-> IER  = 0x02;                         //使能中断4 d$ ^2 ]7 V: [; m* C/ [  |
% }  @8 C1 `* o( F, A) G4 E
    TIM1-> CR1 |= 0x01;                         //使能计数器
- g8 F$ {1 H: h# H8 l/ o: }
% A! |" n$ ]6 M    EA = 1;
( n# A! D2 B; S- W) W! I! s: g. ^$ L+ ]" k7 t2 P" D
    while (1);
9 P+ |# x: S8 E3 N  g+ L) x}
+ E; t2 @' v: c/ |) G1 L. {, l1 O) e
0 l( S1 V+ R& w/******************** PWM中断读编码器计数值**************************/
0 o; z$ t$ o) z( c  ~: X/ pvoid PWMA_ISR() interrupt 26
" x& k* F( M9 l3 j) x3 L{  U8 k) p+ T2 |3 T4 O7 b" Y
    if (TIM1->SR1 & 0X02)
* `' O; B  Y5 A$ m    {
1 u0 x$ K( P" j1 ^+ x: \' M        P03 = ~P03;' o. G( R) c' `: L
        cnt_H = TIM1->CCR1H;
9 ?, O2 l; S. A$ |9 t- r        cnt_L = TIM1->CCR1L;
' V3 _& @) z: f* K' d6 n) k$ S        TIM1->SR1 &= ~0X02;
- C+ A& {( o* |1 h- P, `    }
; K, A, X2 S4 u% y/ y0 Y}$ ~+ I' J5 w5 a9 y) U

该用户从未签到

2#
发表于 2022-6-21 10:04 | 只看该作者
学习学习,||ヽ(* ̄▽ ̄*)ノミ|Ю

该用户从未签到

3#
发表于 2022-6-21 14:23 | 只看该作者
学习,||ヽ(* ̄▽ ̄*)ノミ|Ю

该用户从未签到

4#
发表于 2022-6-21 14:48 | 只看该作者
||ヽ(* ̄▽ ̄*)ノミ|Ю
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-20 16:19 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表