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; }