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

STC32G单片机编码器模式

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
有没人测试过STC32G单片机的编码器模式。0 G) Q: F& Z  U/ n
1.例程 中 P1口选择P1.0 ,P1.2 ,STC32G 没有P1.2   。这么郁闷的事也有。4 o" p+ z# c7 B
2.换到P2 口也没反应。- G6 J+ }4 C, b$ S# ~
3.找到STC8H的编码器历程也不能用。6 `, x# I1 D, o) m3 R; Y1 Z

$ z, D, Q: y; E# B- p下面是STC8H编码器模式历程:
. X! W$ [. u0 U#include "reg51.h"
3 y) z0 x! W" g  _1 [#include "intrins.h"
5 K# R4 r+ G+ q1 j
( |  B" Q( k- j. ttypedef struct TIM1_struct3 E; d$ I% W' y! F5 W# w
{
' }8 v9 ^9 {# d. ^% G. o    volatile unsigned char CR1;     /*!< control register 1 */
8 p7 n4 @8 W2 `7 t; ^! w+ D$ ~    volatile unsigned char CR2;     /*!< control register 2 */% u# B- j1 a  ]! ^! W
    volatile unsigned char SMCR;    /*!< Synchro mode control register */
& P+ r5 Z% @4 c* p    volatile unsigned char ETR;     /*!< external trigger register */" Q, S; N; L9 g6 W0 \# _
    volatile unsigned char IER;     /*!< interrupt enable register*/
4 x0 n- H5 Y" J: p2 |6 x+ b" o    volatile unsigned char SR1;     /*!< status register 1 */
+ j9 d( J8 |6 k4 l* E    volatile unsigned char SR2;     /*!< status register 2 */& Q% B( J5 P& v# ?8 F" B2 I- s
    volatile unsigned char EGR;     /*!< event generation register */
$ d9 o2 J) [4 o    volatile unsigned char CCMR1;   /*!< CC mode register 1 */2 ~1 l- f+ S, i; F' R  L1 T8 t
    volatile unsigned char CCMR2;   /*!< CC mode register 2 */
8 G% p# k1 U5 Z. u* Y    volatile unsigned char CCMR3;   /*!< CC mode register 3 */! w2 ?3 {6 T- S. q/ K6 }
    volatile unsigned char CCMR4;   /*!< CC mode register 4 */3 j. M6 l) w- a" b
    volatile unsigned char CCER1;   /*!< CC enable register 1 */
: ?! l) w' r5 a    volatile unsigned char CCER2;   /*!< CC enable register 2 */3 ]' G* k5 v( e* b+ n; n+ N
    volatile unsigned char CNTRH;   /*!< counter high */( }6 c3 E6 z- Y. Z9 Q
    volatile unsigned char CNTRL;   /*!< counter low */
& ~, S* y# N) ~; p4 `; y. v) k( q    volatile unsigned char PSCRH;   /*!< prescaler high */
# I1 D7 i' ^* n5 W# `, \9 p% N    volatile unsigned char PSCRL;   /*!< prescaler low */
0 q7 R. U2 B; K5 U6 i* Q    volatile unsigned char ARRH;    /*!< auto-reload register high */
6 J& L( G  f3 a' G# F% h8 _    volatile unsigned char ARRL;    /*!< auto-reload register low */( Y( r  h5 U/ L
    volatile unsigned char RCR;     /*!< Repetition Counter register */; q) b5 M3 @8 e$ ?
    volatile unsigned char CCR1H;   /*!< capture/compare register 1 high */3 ]9 I( o7 w" v; ?  [% @* X
    volatile unsigned char CCR1L;   /*!< capture/compare register 1 low */1 o2 e# `% Y& x( M8 [
    volatile unsigned char CCR2H;   /*!< capture/compare register 2 high */
  P9 I' V( u0 m3 u1 B" a0 \    volatile unsigned char CCR2L;   /*!< capture/compare register 2 low */
- m  w$ r/ I) p, V' {    volatile unsigned char CCR3H;   /*!< capture/compare register 3 high */
1 j, q- C/ x4 B4 X    volatile unsigned char CCR3L;   /*!< capture/compare register 3 low */2 B( v  b: h, O( R
    volatile unsigned char CCR4H;   /*!< capture/compare register 3 high */
/ U7 U! S$ Q3 O& p% A$ A    volatile unsigned char CCR4L;   /*!< capture/compare register 3 low */, }# m5 o# j4 {6 s6 N$ Z
    volatile unsigned char BKR;     /*!< Break Register */
4 `8 t% e5 W# U- N7 G: T( ~. b    volatile unsigned char DTR;     /*!< dead-time register */
) h5 J/ Q  y' Z$ _. O3 F- C3 c4 ~    volatile unsigned char OISR;    /*!< Output idle register */0 P6 E- |3 ?, [' i. E' h" G% K
}TIM1_TypeDef;: I. j8 w% z- d6 \
* w4 Y# w7 Y& A" _8 d
#define TIM1_BaseAddress    0xFEC0
1 z" K  n2 x6 R2 f
$ R2 W# C- K" C3 n# {; I9 A#define TIM1        ((TIM1_TypeDef xdata*)TIM1_BaseAddress)' }: @* f8 i  j) G' }6 ~+ S
#define PWMA_ENO    (*(unsigned char volatile xdata *)0xFEB1): S$ X& e, G( `' o
#define PWMA_PS     (*(unsigned char volatile xdata *)0xFEB2)- N% v8 i5 R3 k% t% g

; y3 Y" c/ u$ |' X, |; O- i& h+ Xsfr     P0M0    =   0x94;4 n* z2 b5 r; A! |" _
sfr     P0M1    =   0x93;
7 k/ S4 F4 F& q8 l: Dsfr     P1M0    =   0x92;1 P  y5 Z# r- X8 r) K
sfr     P1M1    =   0x91;3 V! [2 E0 C: y
sfr     P_SW2   =   0xba;
5 H! @. s- s  |/ b
0 k& |4 ~- u* p5 E, \: i9 h  ?) Zsbit    P03     =   P0^3;- x, \  L/ q/ U- Q

$ p3 a1 B5 \8 Z9 N9 Q, z  qunsigned char cnt_H, cnt_L;
; ]9 N1 j9 R  Y" m* h9 T. Q; e" {& Z# v& ?
void main(void)
6 {/ S* _! k) m- b0 s0 [4 d{
" F% }8 \* s% q) b/ n4 O    P_SW2 = 0x80;* t4 v( N, Q/ D5 ~4 U; `" E

, A5 p9 K$ a0 T4 d/ m    P1M1 = 0x0f;0 H- _* {" t% \. {: g
    P1M0 = 0x00;" N9 m3 M7 Z- G. Z+ t& J" T/ ?) [
' J( d* }7 n- c- |
    PWMA_ENO = 0x00;                            //配置成TRGI 的pin需关掉ENO对应bit并配成input: T2 q* X0 f' m7 r3 H
    PWMA_PS = 0x00;                             //00WM at P1
) H  }. Y0 Z, R$ p) _  \' |9 u) T1 W* i& Q  d. `
    TIM1-> PSCRH = 0x00;                        //预分频寄存器
- J1 {( Y3 Y2 `% B3 u    TIM1-> PSCRL = 0x00;
( t, U/ s+ j# b4 A* E; {
6 {0 k# n6 ]* w+ x) l    TIM1-> CCMR1  = 0x21;                       //通道模式配置为输入,接编码器,滤波器4时钟* N( v9 O0 O' l! T8 T9 K1 s
    TIM1-> CCMR2  = 0x21;                       //通道模式配置为输入,接编码器,滤波器4时钟1 B4 L, q' I; ~3 V# J
$ Y" {7 R/ n2 }. ^) H; x
    TIM1-> SMCR   = 0x03;                       //编码器模式3
, \4 ^: z* o& Q
, A6 Q% k9 C0 ]# p$ b    TIM1-> CCER1  = 0x55;                       //配置通道使能和极性
. n* w0 l* W7 o# `0 {9 I# \4 _    TIM1-> CCER2  = 0x55;                       //配置通道使能和极性' Q. u' l) l" ~* T) l

) S4 N+ y: B; l    TIM1-> IER  = 0x02;                         //使能中断
/ z2 H- V7 m8 ?6 a
) q2 @  H5 }4 X5 Y    TIM1-> CR1 |= 0x01;                         //使能计数器- P; D" @& i5 }+ m

6 p  o* F; x/ D' `2 `    EA = 1;
" K8 V5 T: x- h' L7 Y% B8 Q' D& y% v6 I2 l
    while (1);
; d( B. t- b5 S6 ~  e2 d8 {5 s" F8 N}
* C8 U$ t) o, \4 e/ D; I3 `+ v) D6 X. W$ g9 p
/******************** PWM中断读编码器计数值**************************/
7 b4 {6 j5 D+ O0 f( E$ g- P8 k& Zvoid PWMA_ISR() interrupt 26- V0 d- w1 w* R0 Q4 b5 s1 s8 V
{0 Q- |. M4 v: _) z2 r7 c
    if (TIM1->SR1 & 0X02); d! m% v1 Z( w) R4 l6 F$ F
    {
) f! [7 N+ P  E        P03 = ~P03;6 y+ \$ \; Z/ x$ B+ i
        cnt_H = TIM1->CCR1H;
* [1 ~4 @" C8 b% d; J& l        cnt_L = TIM1->CCR1L;
! y+ Q% l& t' p/ x% Q" k, d        TIM1->SR1 &= ~0X02;: ]4 ^' j- k2 B% i" A
    }
) w! o( `; x* n, H9 f* w}
3 T/ \* o0 a' q& A( y

该用户从未签到

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-8-24 14:46 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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