程序总流程
关系统总中断 AD中断函数(64US) ↓ ↓
初始化端口 换向检测和处理 ↓ ↓
初始化时钟 4个通道的电流读取并且清标志位 ↓ ↓
初始化UART1 加载PWM占空比 ↓ ↓ 初始化ADC 退出中断 ↓
初始化TIMERE1 ↓
打开系统总中断 ↓ 延时100MS ↓
读取转把电压 ↓
读取角度切换端口,切换角度 ↓
判断转把状态 ↓
读取峰值,均值电流的基准,并判断是否超出 ↓ MOS管检测 ↓
从EEROM中读取锁电机方向标志位,和电流和欠压修改值 ↓
While(1)主循环
联系方式栏:
第 1 页 共 1 页
IO初始化
PA1 :TB 锁电机 内部上拉,外部要加105的下拉电阻 PA2:TA 助力,标准的输入配置 PA3:TXD或PA3 输出口
PB0:输入,峰值电流通道 PB1:输入,均值电流通道 PB2:输入,电池电压通道 PB3:输入,转把电压检测通道
PB4:输入,标准的输入端口 DC和PB4 PB5:输入,标准的输入端口CR 巡航
PB6:输入或者输出,外部无上拉电阻,有滤波电容 PB7:输入或者输出,外部无上拉电阻,有滤波电容
PC1:C下 PC2:A下 PC3:A上
PC4:输入或者输出,外部无上拉电阻,有滤波电容,凌祥没有使用到此引脚 PC5:刹车,内部上拉 PC6:C上 PC7:B上 PE5 : B下
PD0:刹车中断输入
PD1:输出端口,和烧程序的SWIM PD2:输入端口 霍尔SA PD3:输入端口 霍尔SB PD4:输入端口 霍尔SC
PD5:输入端口SL,内部上拉
PD6:输入端口ABS 内部上拉,外部加105下拉电阻 PD7:输出,LED故障指示
联系方式栏:
第 1 页 共 1 页
1 时钟
STM8S903
//RC输出,不分频。16Mhz HSIDIV[1:0]: CLK_CKDIVR =0x00;
//打开低速内部振荡器,高速内部RC CLK_ICKR =(1<<3)+(1<<0);
联系方式栏:
第 1 页 共 1 页
ADC
1:时钟8MHZ,单次扫描模式 2:外部触发,右对齐模式
3:扫描4个通道,这个地方有疑问
4:64US中断一次,但是比刹车中断的优先级低,刹车可以打断AD转换中断
TIMER1
TIM1_ARR寄存器由预装载缓冲器缓冲,PWM的周期
中央对齐模式2。计数器交替地向上和向下计数。配置为输出的通道(TIM1_CCMRx寄存器中CCiS=00)的输出比较中断标志位,只在计数器向上计数时被置1。
如果UDIS允许产生更新事件,则只有当下列事件发生时才产生更新中断,并UIF置1: 寄存器被更新(计数器上溢/下溢)
更新 – 更新事件被选为触发输入(TRGO)。 用来触发AD
CCIE,CCINE,CCiP,CCiNP和OCIM位是预装载的;设置该位后,它们只在设置了COMG位(TIM1_EGR寄存器)后被更新。
允许刹车中断,并且优先级最高
110:PWM模式1- 在向上计数时,一旦TIM1_CNT 周期TIM1_ARR=0XFF;周期等于256*2/8=64US 联系方式栏: 因篇幅问题不能全部显示,请点此查看更多更全内容