打印
[STM8]

stm8s单片机浮点数转四字节串口输出方案源程序

[复制链接]
751|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
注释掉的为转四字节方案

未注释掉的为直观显示数据方案

/******************************************************

定时器1中断1ms

******************************************************/

INTERRUPT_HANDLER(TIM1_UPD_OVF_TRG_BRK_IRQHandler, 11)

{

/* In order to detect unexpected events during development,

it is recommended to set a breakpoint on the following instruction.

*/

//  uint16_t i, j;

//

//  TIM1_ClearITPendingBit(TIM1_IT_UPDATE);

//

//

//  GPIO_WriteHigh(GPIOD, GPIO_PIN_3);

//  while(( UART3_GetFlagStatus(UART3_FLAG_TXE)==RESET));

//  UART3_SendData8(1);

//

//  for(i = 0; i < 60000; i++);

//

//  GPIO_WriteLow(GPIOD, GPIO_PIN_3);

static u16 time = 0;

float root = 0;

//  u8 * p;

//  u8 ftc1, ftc2, ftc3, ftc4;

//  u8 high3, low3;

TIM1_ClearITPendingBit(TIM1_IT_UPDATE);

UartReadMonitor(1);

if(time == 100)

{

GPIO_WriteHigh(GPIOD, GPIO_PIN_3);

root = SF6Root(273,0.5);

while(( UART3_GetFlagStatus(UART3_FLAG_TXE)==RESET));

UART3_SendData8((u8)((unsigned int)(root/100)%10)+48);

while(( UART3_GetFlagStatus(UART3_FLAG_TXE)==RESET));

UART3_SendData8((u8)((unsigned int)(root/10)%10)+48);

while(( UART3_GetFlagStatus(UART3_FLAG_TXE)==RESET));

UART3_SendData8((u8)((unsigned int)(root/1)%10)+48);

while(( UART3_GetFlagStatus(UART3_FLAG_TXE)==RESET));

UART3_SendData8('.');

while(( UART3_GetFlagStatus(UART3_FLAG_TXE)==RESET));

UART3_SendData8((u8)((unsigned int)(root*10)%10)+48);

while(( UART3_GetFlagStatus(UART3_FLAG_TXE)==RESET));

UART3_SendData8((u8)((unsigned int)(root*100)%10)+48);

while(( UART3_GetFlagStatus(UART3_FLAG_TXE)==RESET));

UART3_SendData8((u8)((unsigned int)(root*1000)%10)+48);

//    p = (u8 *)(&root);

//

//    high3 = (u8)root;

//    low3 = (u8)((root - high3)*100);

//

//    ftc1 = *p++;

//    ftc2 = *p++;

//    ftc3 = *p++;

//    ftc4 = *p;

//    while(( UART3_GetFlagStatus(UART3_FLAG_TXE)==RESET));

//    UART3_SendData8(high3);

//    while(( UART3_GetFlagStatus(UART3_FLAG_TXE)==RESET));

//    UART3_SendData8(low3);

//    while(( UART3_GetFlagStatus(UART3_FLAG_TXE)==RESET));

//    UART3_SendData8(ftc4);

//    while(( UART3_GetFlagStatus(UART3_FLAG_TXE)==RESET));

//    UART3_SendData8(ftc3);

//    while(( UART3_GetFlagStatus(UART3_FLAG_TXE)==RESET));

//    UART3_SendData8(ftc2);

//    while(( UART3_GetFlagStatus(UART3_FLAG_TXE)==RESET));

//    UART3_SendData8(ftc1);

time = 0;

}

time++;

}

使用特权

评论回复
沙发
tpgf| | 2024-5-6 17:17 | 只看该作者
不同形式的单片机中浮点数的位数是一样的吗

使用特权

评论回复
板凳
xiaoqizi| | 2024-5-6 20:22 | 只看该作者
是否可以将浮点数直接转换成字符输出呢

使用特权

评论回复
地板
wowu| | 2024-5-6 20:53 | 只看该作者
需要自己定义是大端对齐方式还是小端对齐方式吗

使用特权

评论回复
5
木木guainv| | 2024-5-7 09:42 | 只看该作者
看代码好像对浮点数据进行了一下数字处理啊

使用特权

评论回复
6
晓伍| | 2024-5-7 23:26 | 只看该作者
直接进行除法运算和取余数运算 会不会拖慢单片机的速度啊

使用特权

评论回复
7
磨砂| | 2024-5-7 23:58 | 只看该作者
感觉代码里边中断函数里边的判定太多了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

692

帖子

1

粉丝