STM32CubeMX个人记录

个人使用
仅作记录
防止遗忘

文章目录

  • 2022-12-15 新建,基础配置,生成配置
  • 2022-12-15 ADC配置
  • 2022-12-17 us级延时配置(TIM3)
  • 2022-12-17 串口配置(uart1)

2022-12-15 新建,基础配置,生成配置

新建,输入型号
在这里插入图片描述

双击型号,进入相应型号编辑窗口,如图
在这里插入图片描述
在这里插入图片描述

配置下载方式,个人使用自制ST-LINK V2下载,所以是通过SWDIO和SWCLK下载,选择Serial Wire
在这里插入图片描述
配置时钟,个人使用高速时钟,低速时钟暂时不使用,所以只开启高速时钟
在这里插入图片描述

配置晶振,个人偏好24MHZ晶振,如图配置,其他为自动生成
在这里插入图片描述

配置生成模式,个人使用keil编写,该模式为个人编写习惯
在这里插入图片描述
在这里插入图片描述

2022-12-15 ADC配置

选择引脚,使能ADC
在这里插入图片描述
配置参数(个人习惯)
在这里插入图片描述
在这里插入图片描述

2022-12-17补充:调用代码

//ADC-扫描
void ADC_saomiao(void)		//ADC-扫描
{unsigned char i,j;if(index_adc){index_adc = 0;for(j=0;j<5;j++)	//读取5次求平均值{for(i=0;i<3;i++)	//读取3组ADC{HAL_ADC_Start(&hadc1);	//开启ADC转换HAL_ADC_PollForConversion(&hadc1 ,10);	//等待转换完成,超时时间:50msadcBuf[i] += HAL_ADC_GetValue(&hadc1);	//将ADC值存入数组}}//处理ADC值//取出ADC值并显示a1_adc_value = adcBuf[0] / 5;	//ADC值A1_xs[3] = a1_adc_value / 1000 % 10 + 0x30;A1_xs[4] = a1_adc_value / 100 % 10 + 0x30;A1_xs[5] = a1_adc_value / 10 % 10 + 0x30;A1_xs[6] = a1_adc_value / 1 % 10 + 0x30;//ADC电压v_adc_value = adcBuf[1] / 5 * (3.3 / 4096) * 2;	//电压//清空数组adcBuf[0] = 0;adcBuf[1] = 0;adcBuf[2] = 0;//停止ADC转换HAL_ADC_Stop(&hadc1);}
}

2022-12-17 us级延时配置(TIM3)

us级延时配置(TIM3)
在这里插入图片描述

调用代码

//延时初始化
void Delay_Init(void)	//延时初始化
{HAL_TIM_Base_Start_IT(&htim3);	//打开定时器3中断
}//微秒级延时
void Delay_us(uint16_t nus)	//微秒级延时
{__HAL_TIM_SET_COUNTER(&htim3, 0);while((__HAL_TIM_GET_COUNTER(&htim3)) < nus);
}

2022-12-17 串口配置(uart1)

串口配置(个人使用习惯)
在这里插入图片描述
在这里插入图片描述

uart.c文件

unsigned char Res1_Buf[1024];	//串口1接收缓存数组
unsigned char Res1_Sign = 0;	//串口1接收标志位
unsigned int Res1_Count = 0;	//串口1接收数据计数器
unsigned char Res1_Flag = 0;		//串口1接收数据完成标志位//串口初始化
void Uart_Init(void)	//串口初始化
{__HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE);	//打开串口1接收中断
}//串口1接收函数
void Uart1_Receiver(void)	//串口1接收函数
{unsigned char Res = 0;if(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_RXNE) != RESET)	//判断串口1是否接收到字节{HAL_UART_Receive(&huart1, &Res, 1, 1000);Res1_Buf[Res1_Count++] = Res;	//取出串口2接收到的数据并存入Res1_Buf数组中Res1_Sign = 1;	//串口1接收标志位置1Res1_Flag = 0;	//串口1接收数据完成标志位清零}
}//清空接收串口1数组程序
void QK_SZ1(void)	//清空接收串口1数组程序
{memset(Res1_Buf, 0,strlen((const char *)Res1_Buf));	//清零串口1数组Res1_Count = 0;Res1_Sign = 0;
}

uart.h文件

extern unsigned char Res1_Buf[1024];	//串口1接收缓存数组
extern unsigned char Res1_Sign;	//串口1接收标志位
extern unsigned int Res1_Count;	//串口1接收数据计数器
extern unsigned char Res1_Flag;		//串口1接收数据完成标志位void Uart_Init(void);	//串口初始化
void Uart1_Receiver(void);	//串口1接收函数
void QK_SZ1(void);	//清空接收串口1数组程序

发送及重定义函数

HAL_UART_Transmit(&huart1, cmd, len, 1000);	//串口发送函数(串口编号,待发送字符串,待发送字符串长度,发送等待时间)//printf重定义,串口2	(使用时放于主函数)
int fputc(int ch, FILE *f)
{HAL_UART_Transmit(&huart2,(uint8_t *)&ch,1,0xff);return ch;
}

具体配置
将Uart1_Receiver函数置于stm32f1xx_it.c的USART1_IRQHandler函数中
并屏蔽掉HAL_UART_IRQHandler函数
在这里插入图片描述
具体使用

if(Res1_Sign == 1)	//串口1接收标志位
{//接收到最后一个字节,再延时5msdo{Res1_Flag++;HAL_Delay(1);}while(Res1_Flag < 5);	//等待串口1接收完成Res1_Sign = 0;	//串口1接收标志位清零Res1_Flag = 0;	//串口1接收数据完成标志位//对接受的数组进行处理Res1_Count = 0;	//串口1接收数据计数器清零
}

个人使用
仅作记录
防止遗忘


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部