STM32CubeMX个人记录

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

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);	//等待转换完成,超时时间:50ms
				adcBuf[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接收标志位置1
		Res1_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接收标志位
{
	//接收到最后一个字节,再延时5ms
	do{
		Res1_Flag++;
		HAL_Delay(1);
	}while(Res1_Flag < 5);	//等待串口1接收完成
	
	Res1_Sign = 0;	//串口1接收标志位清零
	
	Res1_Flag = 0;	//串口1接收数据完成标志位
	
	//对接受的数组进行处理
	
	Res1_Count = 0;	//串口1接收数据计数器清零
}

2024-02-04 中断优先级(NVIC)

Preemption Priority:抢占优先级
Sub Priority:子优先级
在这里插入图片描述
1、抢占优先级:顾名思义能够抢先执行任务,即打断当前的主程序或者中断程序的运行,前去完成抢断中断。也称中断嵌套。

2、子优先级:也是从优先级或者副优先级,在抢占优先级相同的情况下不能发生中断嵌套,高级的子优先级先执行。如果低级的子优先级在执行,需要等待完成才能执行高级的子优先级,即不发生抢断。

注:
抢占优先级高的可以打断抢占优先级低的执行
子优先级高的不可以打断子优先级低的执行
数值越小,优先级越高

2024-02-05 STM32CubeMX生成工程时缺少启动文件报错

在这里插入图片描述
在这里插入图片描述
Project language : C
but MDK-ARM V5.32project generation have a problem.

keil编译报错:
0\0.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.
Not enough information to list image symbols.
Not enough information to list the image map.

在这里插入图片描述
解决办法:
将工程路径设置为全英文路径即可。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值