想请问一个关于副程式的问题
最近利用STM32想开发MODBUS的应用MODBUS内有CRC16需要计算
所以在KEIL内写了一个一个CRC的计算程式
但是遇到一个问题就是串口0和1分别是不同的MODBUS总线
所以以两组不同的UART中断
还有发送的两个串口放在主回圈内(非使用中断)
所以一个四个地方需要计算CRC
这样的话大家能共用同一组副程式??
还是需要一个独立的副程式(代码都一样!?) 若程式是可重入的
就能在不同地方公用同一副程式 如果TX使用CRC过程中发生中断会不会导致RX使用CRC时TX的CRC发生错误?(如果中断没先关闭的话?) whatdavid 发表于 2015-10-12 08:59
如果TX使用CRC过程中发生中断会不会导致RX使用CRC时TX的CRC发生错误?(如果中断没先关闭的话?) ...
如果你的crc程式是可重入的则不会产生此问题 那请问一下这样有包含不可重入的因子吗(*input 为接收或传送阵列)
//****************************************************************************************
unsigned int CRC_Cal(unsigned char *input,unsigned char length)
{
unsigned int j;
unsigned int Reg_CRC = 0xFFFF;
while(length--)
{
Reg_CRC ^= *input++;
for(j=0;j<8;j++)
{
if(Reg_CRC & 0x01)
Reg_CRC=(Reg_CRC >>1) ^ 0xA001;
else
Reg_CRC = Reg_CRC >>1;
}
}
return Reg_CRC;
} whatdavid 发表于 2015-10-12 09:07
那请问一下这样有包含不可重入的因子吗(*input 为接收或传送阵列)
//************************************ ...
末引用任何全局变量,函数内也末使用static定义的变量,也末调用其它函数,所以是可重入且线程安全的。 非常感谢~~
页:
[1]