HX710_24位电子秤AD采集

stm32f030c8t6 定时adc采集 串口发出

1.硬件环境:
a.核心板:stm32f030c8t6核心板,HX710电子秤芯片
b.调试器:JY-MCU Jlink OB ARM调试器 仿真器 下载器 编程器 支持JTAG/SWD
c.5v电源线:usb数据线 安卓 3米
d.串口工具:PL2303 串口升级模块 USB转TTL 升级小板 带外壳 USB转串口下载线
e.外接adc模块的模拟信号输入
2.软件环境:
a.stm32CubeMx–完成硬件的初始化工作
b.IAR Embedded Workbench IDE-ARM 7.70.1–完成项目的逻辑功能,提供调试,仿真,下载,编程等功能
c.匿名科创地面站 v4.06–pc端串口调试工具
d.友善串口调试助手–pc端串口调试工具
3.开发步骤:
a.硬件环境搭建
b.硬件初始化
c.代码逻辑实现
4.代码展示:
a.main函数

int main(void)
{
    static uint32_t vres = 0;
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  while(1)
  {
      vres = ReadCount();
      resvalue = logTestPkg(vres);

  }

}

b.读取采样值的函数

uint32_t ReadCount(void)
{   
    uint32_t Count = 0;   
    unsigned char i; 
    int n = 5;

    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
    while(1==HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)); 
    for (i=0;i<24;i++)
    {   
      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
      n = 5;
      while(n--);
      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
      n = 5;
      while(n--);

      if(1==HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0))
      {
        Count <<= 1;
        Count |= 1;
      }
      else
      {
        Count <<=1;
      }
   } 
   Count <<= 8;

   HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
   n = 5;
   while(n--);
   HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
   n = 5;
   while(n--);

   HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
   n = 5;
   while(n--);
   HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
   n = 5;
   while(n--);


   HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
   n = 5;
   while(n--);

   HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);

   return Count;
}

c.通过串口发出的函数

int logTestPkg(unsigned int val)
{
  uint8_t buffer[4] = "";
  uint8_t txbuf[100];
  uint32_t l; 

  uint32_t timestp = HAL_GetTick();
  uint16_t sum = 0;
  uint8_t* pData;

  buffer[0] = (val>>24)&0xff;
  buffer[1] = (val>>16)&0xff;
  buffer[2] = (val>>8)&0xff;
  buffer[3] = (val>>0)&0xff;

  l = 0;
  txbuf[l++] = 0xAA;
  txbuf[l++] = 0xAA;
  txbuf[l++] = 0xF4;
  txbuf[l++] = 12;

  txbuf[l++] = (timestp>>8)&0xFF;
  txbuf[l++] = (timestp>>0)&0xFF;  

  for (int i=0; ifor (int i=l;i<36;i++)
  {
    txbuf[l++] = 0;
  } 

  txbuf[3] = l-4;

  for (int i=0;i0xFF;

  HAL_UART_Transmit(&huart1, txbuf, l, 20);

  return l;
}

你可能感兴趣的:(研发管理)