void init_timer1()
{
//TCCR1A T/C1控制寄存器A
// -----------------------------------------------------------------
// | COM1A1| COM1A0| COM1B1| COM1B0| COM1C1| COM1C0| WGM11 | WGM10 |
// -----------------------------------------------------------------
//TCCR1B T/C1控制寄存器B
// -----------------------------------------------------------------
// | ICNC1 | ICES1 | - | WGM13 | WGM12 | CS12 | CS11 | CS10 |
// -----------------------------------------------------------------
//TCCR1C T/C1控制寄存器C
// -----------------------------------------------------------------
// | FOC1A | FOC1B | FOC1C | - | - | - | - | - |
// -----------------------------------------------------------------
// COM1A1,COM1A0:通道A的比较输出模式
// COM1B1,COM1B0:通道B的比较输出模式
// COM1C1,COM1C0:通道C的比较输出模式
// WGM13,WGM12,WGM11,WGM10:波型发生模式:
// 比较输出模式(CTC模式),非PWM
// 00 普通端口操作,OC1A/OC1B/OC1C未连接
// 01 比较匹配时OC1A/OC1B/OC1C电平取反
// 10 比较匹配时清零OC1A/OC1B/OC1C(输出低电平)
// 11 比较匹配时置位OC1A/OC1B/OC1C(输出高电平)
// 比较输出模式(CTC模式),快速PWM
// 00 普通端口操作,OC1A/OC1B/OC1C未连接
// 01 WGM13为0时同上,为1时比较匹配时 OC1A电平取反,OC1B/OC1C保留
// 10 比较匹配时OC1A/OC1B/OC1C清零,在TOP时OC1A/OC1B/OC1C置位
// 11 比较匹配时OC1A/OC1B/OC1C置位,在TOP时OC1A/OC1B/OC1C清零
// 比较输出模式(CTC模式),相位修正及相频修正PWM
// 00 普通端口操作,OC1A/OC1B/OC1C未连接
// 01 WGM13为0:同上,为1时比较匹配时 OC1A电平取反,OC1B/OC1C保留
// 10 升序计数匹配时将OC1A/OC1B/OC1C清零,降序计数匹配时将OC1A/OC1B/OC1C置位
// 11 升序计数匹配时将OC1A/OC1B/OC1C置位,降序计数匹配时将OC1A/OC1B/OC1C清零
//
// 模式 WGM1x 工作模式说明 TOP OCR1x更新时刻 TOVn置位时刻
// 0 0000 普通模式 0xFFFF 立即 MAX
// 1 0001 8位相位修正PWM 0x00FF TOP BOTTOM
// 2 0010 9位相位修正PWM 0x01FF TOP BOTTOM
// 3 0011 10位相位修正PWM 0x03FF TOP BOTTOM
// 4 0100 CTC OCRnA 立即 MAX
// 5 0101 8位快速PWM 0x00FF TOP TOP
// 6 0110 9位快速PWM 0x01FF TOP TOP
// 7 0111 10位快速PWM 0x03FF TOP TOP
// 8 1000 相位频率修正PWM ICRn BOTTOM BOTTOM
// 9 1001 相位频率修正PWM OCRnA BOTTOM BOTTOM
// 10 1010 相位修正PWM ICRn TOP BOTTOM
// 11 1011 相位修正PWM OCRnA TOP BOTTOM
// 12 1100 CTC ICRn 立即 MAX
// 13 1101 保留 - - -
// 14 1110 快速PWM ICRn TOP TOP
// 15 1111 快速PWM OCRnA TOP TOP
// ICNC1:使能/禁止输入捕捉噪声抑制器
// ICES1:输入捕获触发沿选择,0为下降沿触发,1为上升沿触发
// CS12,CS11,CS10:T/C0时钟预分频选择
// 000:无时钟,T/C不工作 001:1/1
// 010:1/8 011:1/64 100:1/256
// 101:1/1024 110:外部T1脚下降沿驱动 111:外部T1脚上升沿驱动
// FOC1A,FOC1B,FOC1C:强制输出比较通道A,B,C
TCCR1A = TCCR1B = TCCR1C = 0;
//TCNT1H,TCNT1L 定时/计数器1
//OCR1AH,OCR1AL 输出比较寄存器1A
//OCR1BH,OCR1BL 输出比较寄存器1B
//OCR1CH,OCR1CL 输出比较寄存器1C
//ICR1H,ICR1L 输入捕捉寄存器1
}
void init_timer3()
{
//TCCR3A T/C3控制寄存器A
// -----------------------------------------------------------------
// | COM3A1| COM3A0| COM3B1| COM3B0| COM3C1| COM3C0| WGM31 | WGM30 |
// -----------------------------------------------------------------
//TCCR3B T/C3控制寄存器B
// -----------------------------------------------------------------
// | ICNC3 | ICES3 | - | WGM33 | WGM32 | CS32 | CS31 | CS30 |
// -----------------------------------------------------------------
//TCCR3C T/C3控制寄存器C
// -----------------------------------------------------------------
// | FOC3A | FOC3B | FOC3C | - | - | - | - | - |
// -----------------------------------------------------------------
// COM3A1,COM3A0:通道A的比较输出模式
// COM3B1,COM3B0:通道B的比较输出模式
// COM3C1,COM3C0:通道C的比较输出模式
// WGM33,WGM32,WGM31,WGM30:波型发生模式:
// 比较输出模式(CTC模式),非PWM
// 00 普通端口操作,OC3A/OC3B/OC3C未连接
// 01 比较匹配时OC3A/OC3B/OC3C电平取反
// 10 比较匹配时清零OC3A/OC3B/OC3C(输出低电平)
// 11 比较匹配时置位OC3A/OC3B/OC3C(输出高电平)
// 比较输出模式(CTC模式),快速PWM
// 00 普通端口操作,OC3A/OC3B/OC3C未连接
// 01 WGM13为0时同上,为1时比较匹配时 OC3A电平取反,OC3B/OC3C保留
// 10 比较匹配时OC3A/OC3B/OC3C清零,在TOP时OC3A/OC3B/OC3C置位
// 11 比较匹配时OC3A/OC3B/OC3C置位,在TOP时OC3A/OC3B/OC3C清零
// 比较输出模式(CTC模式),相位修正及相频修正PWM
// 00 普通端口操作,OC3A/OC3B/OC3C未连接
// 01 WGM13为0:同上,为1时比较匹配时 OC3A电平取反,OC3B/OC3C保留
// 10 升序计数匹配时将OC3A/OC3B/OC3C清零,降序计数匹配时将OC3A/OC3B/OC3C置位
// 11 升序计数匹配时将OC3A/OC3B/OC3C置位,降序计数匹配时将OC3A/OC3B/OC3C清零
//
// 模式 WGM3x 工作模式说明 TOP OCR1x更新时刻 TOVn置位时刻
// 0 0000 普通模式 0xFFFF 立即 MAX
// 1 0001 8位相位修正PWM 0x00FF TOP BOTTOM
// 2 0010 9位相位修正PWM 0x01FF TOP BOTTOM
// 3 0011 10位相位修正PWM 0x03FF TOP BOTTOM
// 4 0100 CTC OCRnA 立即 MAX
// 5 0101 8位快速PWM 0x00FF TOP TOP
// 6 0110 9位快速PWM 0x01FF TOP TOP
// 7 0111 10位快速PWM 0x03FF TOP TOP
// 8 1000 相位频率修正PWM ICRn BOTTOM BOTTOM
// 9 1001 相位频率修正PWM OCRnA BOTTOM BOTTOM
// 10 1010 相位修正PWM ICRn TOP BOTTOM
// 11 1011 相位修正PWM OCRnA TOP BOTTOM
// 12 1100 CTC ICRn 立即 MAX
// 13 1101 保留 - - -
// 14 1110 快速PWM ICRn TOP TOP
// 15 1111 快速PWM OCRnA TOP TOP
// ICNC3:使能/禁止输入捕捉噪声抑制器
// ICES3:输入捕获触发沿选择,0为下降沿触发,1为上升沿触发
// CS32,CS31,CS30:T/C0时钟预分频选择
// 000:无时钟,T/C不工作 001:1/1
// 010:1/8 011:1/64 100:1/256
// 101:1/1024 110:外部T1脚下降沿驱动 111:外部T1脚上升沿驱动
// FOC3A,FOC3B,FOC3C:强制输出比较通道A,B,C
TCCR3A = TCCR3B = TCCR3C = 0;
//TCNT3H,TCNT3L 定时/计数器3
//OCR3AH,OCR3AL 输出比较寄存器3A
//OCR3BH,OCR3BL 输出比较寄存器3B
//OCR3CH,OCR3CL 输出比较寄存器3C
//ICR3H,ICR3L 输入捕捉寄存器3
}
void init_uart(void)
{
//UDRn USART I/O数据寄存器, 不可用读修改写命令操作, 否则会改变FIFO状态
//UCSRnA USART控制和状态寄存器A
// -----------------------------------------------------------------
// | RXCn | TXCn | UDREn | FEn | DORn | UPEn | U2Xn | MPCMn |
// -----------------------------------------------------------------
// RXCn:USART接收结束标志
// TXCn:USART发送结束标志,写1可清除
// UDREn:USART数据寄存器为空标志,只有该标志为1才数据才可写入UDR0
// FEn:帧错误,未正确收到停止位
// DORn:数据过速
// UPEn:奇偶效验错误
// U2Xn:倍速发送,仅对异步操作有影响
// MPCMn:多处理器通讯模式
//UCSRnB USART控制和状态寄存器B
// -----------------------------------------------------------------
// | RXCIEn| TXCIEn| UDRIEn| RXENn | TXENn | UCSZn2| RXB8n | TXB8n |
// -----------------------------------------------------------------
// RXCIEn:接收结束中断使能
// TXCIEn:发送结束中断使能
// UDRIEn:USART数据寄存器空中使能
// RXENn:接收使能
// TXENn:发送使能
// UCSZn2:字符长度,具体见下面
// RXB8n:接收数据位8
// TXB8n:发送数据位8
//UCSRxC USART控制和状态寄存器C
// -----------------------------------------------------------------
// | - | UMSELn| UPMn1 | UPMn0 | USBSn | UCSZn1| UCXZn0| UCPOLn|
// -----------------------------------------------------------------
// UMSELn:模式选择,0为异步操作,1为同步操作
// UPMn1,UPMn0:奇偶效验模式,00禁止,01保留,10偶效验,11奇校验
// USBSn:停止位选择,0为1位停止位,1为2位停止位
// UCSZn2,UCSZn0:字符长度,000为5位, 001为 6位,010为7位, 011为8位
// 100为保留,101为保留,110为保留,111为9位
// UCPOLn:时钟极性,(异步模式应清零)
// UCPOL0 发送数据位置 接收数据位置
// 0 XCK0上升沿 XCK0下降沿
// 1 XCK0下降沿 XCK0上升沿
//UBRRnL和UBRRnH USART波特率寄存器, UBRRnH15:12为保留位:
// -----------------------------------------------------------------
// | - | - | - | - | BIT11 | BIT10 | BIT09 | BIT08 |
// -----------------------------------------------------------------
// -----------------------------------------------------------------
// | BIT07 | BIT06 | BIT05 | BIT04 | BIT03 | BIT02 | BIT01 | BIT00 |
// -----------------------------------------------------------------
}
void init_timer1()
{
//TCCR1A T/C1控制寄存器A
// -----------------------------------------------------------------
// | COM1A1| COM1A0| COM1B1| COM1B0| COM1C1| COM1C0| WGM11 | WGM10 |
// -----------------------------------------------------------------
//TCCR1B T/C1控制寄存器B
// -----------------------------------------------------------------
// | ICNC1 | ICES1 | - | WGM13 | WGM12 | CS12 | CS11 | CS10 |
// -----------------------------------------------------------------
//TCCR1C T/C1控制寄存器C
// -----------------------------------------------------------------
// | FOC1A | FOC1B | FOC1C | - | - | - | - | - |
// -----------------------------------------------------------------
// COM1A1,COM1A0:通道A的比较输出模式
// COM1B1,COM1B0:通道B的比较输出模式
// COM1C1,COM1C0:通道C的比较输出模式
// WGM13,WGM12,WGM11,WGM10:波型发生模式:
// 比较输出模式(CTC模式),非PWM
// 00 普通端口操作,OC1A/OC1B/OC1C未连接
// 01 比较匹配时OC1A/OC1B/OC1C电平取反
// 10 比较匹配时清零OC1A/OC1B/OC1C(输出低电平)
// 11 比较匹配时置位OC1A/OC1B/OC1C(输出高电平)
// 比较输出模式(CTC模式),快速PWM
// 00 普通端口操作,OC1A/OC1B/OC1C未连接
// 01 WGM13为0时同上,为1时比较匹配时 OC1A电平取反,OC1B/OC1C保留
// 10 比较匹配时OC1A/OC1B/OC1C清零,在TOP时OC1A/OC1B/OC1C置位
// 11 比较匹配时OC1A/OC1B/OC1C置位,在TOP时OC1A/OC1B/OC1C清零
// 比较输出模式(CTC模式),相位修正及相频修正PWM
// 00 普通端口操作,OC1A/OC1B/OC1C未连接
// 01 WGM13为0:同上,为1时比较匹配时 OC1A电平取反,OC1B/OC1C保留
// 10 升序计数匹配时将OC1A/OC1B/OC1C清零,降序计数匹配时将OC1A/OC1B/OC1C置位
// 11 升序计数匹配时将OC1A/OC1B/OC1C置位,降序计数匹配时将OC1A/OC1B/OC1C清零
//
// 模式 WGM1x 工作模式说明 TOP OCR1x更新时刻 TOVn置位时刻
// 0 0000 普通模式 0xFFFF 立即 MAX
// 1 0001 8位相位修正PWM 0x00FF TOP BOTTOM
// 2 0010 9位相位修正PWM 0x01FF TOP BOTTOM
// 3 0011 10位相位修正PWM 0x03FF TOP BOTTOM
// 4 0100 CTC OCRnA 立即 MAX
// 5 0101 8位快速PWM 0x00FF TOP TOP
// 6 0110 9位快速PWM 0x01FF TOP TOP
// 7 0111 10位快速PWM 0x03FF TOP TOP
// 8 1000 相位频率修正PWM ICRn BOTTOM BOTTOM
// 9 1001 相位频率修正PWM OCRnA BOTTOM BOTTOM
// 10 1010 相位修正PWM ICRn TOP BOTTOM
// 11 1011 相位修正PWM OCRnA TOP BOTTOM
// 12 1100 CTC ICRn 立即 MAX
// 13 1101 保留 - - -
// 14 1110 快速PWM ICRn TOP TOP
// 15 1111 快速PWM OCRnA TOP TOP
// ICNC1:使能/禁止输入捕捉噪声抑制器
// ICES1:输入捕获触发沿选择,0为下降沿触发,1为上升沿触发
// CS12,CS11,CS10:T/C0时钟预分频选择
// 000:无时钟,T/C不工作 001:1/1
// 010:1/8 011:1/64 100:1/256
// 101:1/1024 110:外部T1脚下降沿驱动 111:外部T1脚上升沿驱动
// FOC1A,FOC1B,FOC1C:强制输出比较通道A,B,C
TCCR1A = TCCR1B = TCCR1C = 0;
//TCNT1H,TCNT1L 定时/计数器1
//OCR1AH,OCR1AL 输出比较寄存器1A
//OCR1BH,OCR1BL 输出比较寄存器1B
//OCR1CH,OCR1CL 输出比较寄存器1C
//ICR1H,ICR1L 输入捕捉寄存器1
}
void init_timer3()
{
//TCCR3A T/C3控制寄存器A
// -----------------------------------------------------------------
// | COM3A1| COM3A0| COM3B1| COM3B0| COM3C1| COM3C0| WGM31 | WGM30 |
// -----------------------------------------------------------------
//TCCR3B T/C3控制寄存器B
// -----------------------------------------------------------------
// | ICNC3 | ICES3 | - | WGM33 | WGM32 | CS32 | CS31 | CS30 |
// -----------------------------------------------------------------
//TCCR3C T/C3控制寄存器C
// -----------------------------------------------------------------
// | FOC3A | FOC3B | FOC3C | - | - | - | - | - |
// -----------------------------------------------------------------
// COM3A1,COM3A0:通道A的比较输出模式
// COM3B1,COM3B0:通道B的比较输出模式
// COM3C1,COM3C0:通道C的比较输出模式
// WGM33,WGM32,WGM31,WGM30:波型发生模式:
// 比较输出模式(CTC模式),非PWM
// 00 普通端口操作,OC3A/OC3B/OC3C未连接
// 01 比较匹配时OC3A/OC3B/OC3C电平取反
// 10 比较匹配时清零OC3A/OC3B/OC3C(输出低电平)
// 11 比较匹配时置位OC3A/OC3B/OC3C(输出高电平)
// 比较输出模式(CTC模式),快速PWM
// 00 普通端口操作,OC3A/OC3B/OC3C未连接
// 01 WGM13为0时同上,为1时比较匹配时 OC3A电平取反,OC3B/OC3C保留
// 10 比较匹配时OC3A/OC3B/OC3C清零,在TOP时OC3A/OC3B/OC3C置位
// 11 比较匹配时OC3A/OC3B/OC3C置位,在TOP时OC3A/OC3B/OC3C清零
// 比较输出模式(CTC模式),相位修正及相频修正PWM
// 00 普通端口操作,OC3A/OC3B/OC3C未连接
// 01 WGM13为0:同上,为1时比较匹配时 OC3A电平取反,OC3B/OC3C保留
// 10 升序计数匹配时将OC3A/OC3B/OC3C清零,降序计数匹配时将OC3A/OC3B/OC3C置位
// 11 升序计数匹配时将OC3A/OC3B/OC3C置位,降序计数匹配时将OC3A/OC3B/OC3C清零
//
// 模式 WGM3x 工作模式说明 TOP OCR1x更新时刻 TOVn置位时刻
// 0 0000 普通模式 0xFFFF 立即 MAX
// 1 0001 8位相位修正PWM 0x00FF TOP BOTTOM
// 2 0010 9位相位修正PWM 0x01FF TOP BOTTOM
// 3 0011 10位相位修正PWM 0x03FF TOP BOTTOM
// 4 0100 CTC OCRnA 立即 MAX
// 5 0101 8位快速PWM 0x00FF TOP TOP
// 6 0110 9位快速PWM 0x01FF TOP TOP
// 7 0111 10位快速PWM 0x03FF TOP TOP
// 8 1000 相位频率修正PWM ICRn BOTTOM BOTTOM
// 9 1001 相位频率修正PWM OCRnA BOTTOM BOTTOM
// 10 1010 相位修正PWM ICRn TOP BOTTOM
// 11 1011 相位修正PWM OCRnA TOP BOTTOM
// 12 1100 CTC ICRn 立即 MAX
// 13 1101 保留 - - -
// 14 1110 快速PWM ICRn TOP TOP
// 15 1111 快速PWM OCRnA TOP TOP
// ICNC3:使能/禁止输入捕捉噪声抑制器
// ICES3:输入捕获触发沿选择,0为下降沿触发,1为上升沿触发
// CS32,CS31,CS30:T/C0时钟预分频选择
// 000:无时钟,T/C不工作 001:1/1
// 010:1/8 011:1/64 100:1/256
// 101:1/1024 110:外部T1脚下降沿驱动 111:外部T1脚上升沿驱动
// FOC3A,FOC3B,FOC3C:强制输出比较通道A,B,C
TCCR3A = TCCR3B = TCCR3C = 0;
//TCNT3H,TCNT3L 定时/计数器3
//OCR3AH,OCR3AL 输出比较寄存器3A
//OCR3BH,OCR3BL 输出比较寄存器3B
//OCR3CH,OCR3CL 输出比较寄存器3C
//ICR3H,ICR3L 输入捕捉寄存器3
}
void init_uart(void)
{
//UDRn USART I/O数据寄存器, 不可用读修改写命令操作, 否则会改变FIFO状态
//UCSRnA USART控制和状态寄存器A
// -----------------------------------------------------------------
// | RXCn | TXCn | UDREn | FEn | DORn | UPEn | U2Xn | MPCMn |
// -----------------------------------------------------------------
// RXCn:USART接收结束标志
// TXCn:USART发送结束标志,写1可清除
// UDREn:USART数据寄存器为空标志,只有该标志为1才数据才可写入UDR0
// FEn:帧错误,未正确收到停止位
// DORn:数据过速
// UPEn:奇偶效验错误
// U2Xn:倍速发送,仅对异步操作有影响
// MPCMn:多处理器通讯模式
//UCSRnB USART控制和状态寄存器B
// -----------------------------------------------------------------
// | RXCIEn| TXCIEn| UDRIEn| RXENn | TXENn | UCSZn2| RXB8n | TXB8n |
// -----------------------------------------------------------------
// RXCIEn:接收结束中断使能
// TXCIEn:发送结束中断使能
// UDRIEn:USART数据寄存器空中使能
// RXENn:接收使能
// TXENn:发送使能
// UCSZn2:字符长度,具体见下面
// RXB8n:接收数据位8
// TXB8n:发送数据位8
//UCSRxC USART控制和状态寄存器C
// -----------------------------------------------------------------
// | - | UMSELn| UPMn1 | UPMn0 | USBSn | UCSZn1| UCXZn0| UCPOLn|
// -----------------------------------------------------------------
// UMSELn:模式选择,0为异步操作,1为同步操作
// UPMn1,UPMn0:奇偶效验模式,00禁止,01保留,10偶效验,11奇校验
// USBSn:停止位选择,0为1位停止位,1为2位停止位
// UCSZn2,UCSZn0:字符长度,000为5位, 001为 6位,010为7位, 011为8位
// 100为保留,101为保留,110为保留,111为9位
// UCPOLn:时钟极性,(异步模式应清零)
// UCPOL0 发送数据位置 接收数据位置
// 0 XCK0上升沿 XCK0下降沿
// 1 XCK0下降沿 XCK0上升沿
//UBRRnL和UBRRnH USART波特率寄存器, UBRRnH15:12为保留位:
// -----------------------------------------------------------------
// | - | - | - | - | BIT11 | BIT10 | BIT09 | BIT08 |
// -----------------------------------------------------------------
// -----------------------------------------------------------------
// | BIT07 | BIT06 | BIT05 | BIT04 | BIT03 | BIT02 | BIT01 | BIT00 |
// -----------------------------------------------------------------
}
举报