蓝桥杯嵌入式模块大全

文章详细介绍了嵌入式系统中串口通信的DMA接收和发送、ADC电压测量、DAC信号输出、PWM控制、RTC时间管理、EEPROM数据存储以及按键扫描和LCD显示等关键功能的实现方法。

一.串口通信 

extern放在main.h中

需要初始化

//define
uint8_t RX[20];
uint8_t TX[20];
uint8_t Recount=0;
extern DMA_HandleTypeDef hdma_usart1_rx;
//main
__HAL_UART_ENABLE_IT(&huart1,UART_IT_IDLE);
__HAL_UART_CLEAR_IDLEFLAG(&huart1);
HAL_UART_Receive_DMA(&huart1,RX,20);
//back function

void Rec_Control()
{
   HAL_UART_Transmit_DMA(&huart1,RX,strlen((char*)TX));
}
void HAL_UART_IdleCpltCallback(UART_HandleTypeDef *huart)
{
     Recount = 20 - __HAL_DMA_GET_COUNTER(&hdma_usart1_rx);
	 Rec_Control();
	 Recount = 0;
	 HAL_UART_Receive_DMA(&huart1,RX,20);
}  
//check function
if(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_IDLE)!=RESET)
{
	 __HAL_UART_CLEAR_IDLEFLAG(&huart1);
	 HAL_UART_DMAStop(&huart1);
	 HAL_UART_IdleCpltCallback(&huart1);
}

二.

ADC

double R_37=0;
double R_38=0;
uint8_t str[20];
void Get_R37()
{
     HAL_ADC_Start(&hadc2);
	 HAL_ADC_PollForConversion(&hadc2,10);
	 int temp1 = HAL_ADC_GetValue(&hadc2);
	 R_37 = temp1*3.3/4096;
	 HAL_ADC_Stop(&hadc2);
}
void Get_R38()
{
     HAL_ADC_Start(&hadc1);
	 HAL_ADC_PollForConversion(&hadc1,10);
	 int temp2 = HAL_ADC_GetValue(&hadc1);
	 R_38 = (temp2*3.3)/4096;
}
void Show()
{
	 Get_R37();
	 Get_R38();
     sprintf((char*)str,"     R37  %.2fV",R_37);
	 LCD_DisplayStringLine(Line4,str);
	 sprintf((char*)str,"     R38  %.2fV",R_38);
	 LCD_DisplayStringLine(Line5,str);
}

DAC

开头要填写开始函数

	HAL_DAC_Start(&hdac1,DAC_CHANNEL_1);
	HAL_DAC_Start(&hdac1,DAC_CHANNEL_2);

结束要有Stop函数

void Set_Value(float r39,float r40)
{
     int temp1 = (r39*4096)/3.3;
	 int temp2 = (r40*4096)/3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝本生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值