内设 | 依赖 | 模式 |
---|---|---|
定时器0 | 4种模式 | |
定时器1 | 2种模式:16位/8位自动重装载 | |
定时器2 | 固定为16位自动重装载 | |
定时器3 | 固定为16位自动重装载 | |
定时器4 | 固定为16位自动重装载 | |
串口1 | 定时器2(default)、定时器1 | 4种模式 |
串口2 | 定时器2 | 2种模式 |
串口3 | 定时器2(default)、定时器3 | 2种模式 |
串口4 | 定时器2(default)、定时器4 | 2种模式 |
定时器0的4种工作模式
模式0:16位自动重装载
模式1:16位不可重装载
模式2:8位自动重装载
模式3:不可屏蔽中断的16位自动重装载
(当定时器0工作在模式3时,定时器1无效)
串口1工作模式
工作模式0:同步移位寄存器,波特率固定
工作模式1:8位UART,波特率可变
工作模式2:9位UART,波特率固定
工作模式3:9位UART,波特率可变
串口2、3、4工作模式
工作模式0:8位UART,波特率可变
工作模式1:9位UART,波特率可变
出错1:
发送字符串时报警告:warning260:指针截断
原代码:
void UART_PutString(char *Str) {
char Chr = &Str;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< &是取地址!!!*才是取数据!!!!
while(Chr != 0) { //指针未指到字符串尾
Chr = &Str;
UART_PutChar(Chr); //将字符成功送入发送FIFO缓冲区
Str++; //字符串指针+1
}
}
正确代码:
void UART_PutString(char *Str) {
while(*Str) { //不等于0说明指针未指到字符串尾'\0'
UART_PutChar(*Str); //将字符成功送入发送FIFO缓冲区
Str++; //字符串指针+1
}
}