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; i<sizeof(buffer); i++){txbuf[l++] = buffer[i]; }for (int i=l;i<36;i++){txbuf[l++] = 0;} txbuf[3] = l-4;for (int i=0;i<l;i++){sum+=txbuf[i];}txbuf[l++] = sum&0xFF;HAL_UART_Transmit(&huart1, txbuf, l, 20);return l;
}