根据还款时钟频率,以及期望波特率期间,计算出当前期间误码率为0的波特率。
#include <stdint.h>
int main()
{
uint32_t InputClockHz = 100000000; //时钟设置
uint32_t Divisor;
uint32_t TargetRate;
uint32_t Error;
uint32_t PercentError;
for (uint32_t BaudRate = 500000; BaudRate < 1500000; BaudRate += 1) //期望波特率期间
{
Divisor = (InputClockHz + ((BaudRate * 16) / 2)) / (BaudRate * 16);
TargetRate = Divisor * BaudRate * 16UL;
if (TargetRate < InputClockHz) {
Error = InputClockHz - TargetRate;
}
else {
Error = TargetRate - InputClockHz;
}
PercentError = (Error * 1000000000000000000UL) / InputClockHz;
if (PercentError == 0)
printf("BaudRate %d\r\n", BaudRate);
}
return 0;
}