2024年4月蓝桥杯嵌入式 进阶复习资料

这篇博客详细记录了蓝桥杯嵌入式进阶复习的重点,涵盖DAC的配置,RTC的初始化,UART1串口的数据发送与接收,以及PWM的单路、双路捕获和输出。通过实例解析了如何进行配置和编程,包括中断、计数器和占空比的计算。
摘要由CSDN通过智能技术生成

Day六、DAC

f17b19b0396347279c10165881ba0303.png

对应的引脚为

ADC1      PA4 -> OU1

                PA5->OUT2

均设置输出到外设。

//DAC
u16 dac_ch1_val, dac_ch2_val;
void DAC_Process(float dac_ch1_val,float dac_ch1_va2)
{
    dac_ch1_val = (dac_ch1_val / 3.3f * 4095);
    dac_ch2_val = (dac_ch1_va2 / 3.3f * 4095);

    HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, dac_ch1_val);	//0-->0v  4095--> 3.3V    1.1v --> 1365
    HAL_DAC_Start(&hdac1, DAC_CHANNEL_1);

    HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_2, DAC_ALIGN_12B_R, dac_ch2_val);	//0-->0v  4095--> 3.3V    2.2v --> 2730
    HAL_DAC_Start(&hdac1, DAC_CHANNEL_2);
}

Day七、RTC

首先要配置正确

2c66c1a1e7ca4e12bf822a514f45eacb.png

根据这个时钟树,我们知道RTC采用内部低速时钟为32KHz,

1、两个都要打开

2、设置初始时间和日期

3、根据时钟树设置成1hz

f85d1ad3d6f44564bc860935c562a915.png

 

编写代码:

1、获取时间,获取日期函数,

将数据显示在LCD上,

//RTC
RTC_TimeTypeDef rtc_time;
RTC_DateTypeDef rtc_date;
void RTC_Process()
{
    HAL_RTC_GetTime(&hrtc, &rtc_time, RTC_FORMAT_BIN);//获取时间
    HAL_RTC_GetDate(&hrtc, &rtc_date, RTC_FORMAT_BIN);//获取日期
    
    u8 display_buf[20];
    sprintf((char *)display_buf, "Time: %02d-%02d-%02d", rtc_time.Hours, rtc_time.Minutes, rtc_time.Seconds);
    LCD_DisplayStringLine(Line5, display_buf); //显示时间
}

Day八、UART1 串口学习

1、数据的发送

 打开异步通信模式,PA9 PA10默认模式,直接生成,

然后引用头文件 

#include <stdio.h>

其次编写重定向文件

//重定向printf函数为串口输出
int fputc(int ch, FILE *f)
{
  HAL_UART_Transmit(&huart1, (unsigned char *)&ch, 1, 50);
  return ch;
}

2、数据的接收,固定格式

CubeMAX配置时打开中断接受功能即可,

同时在代码中添加启动接收中断功能函数

法一、可用,但是数据很难保存

HAL_UART_Receive_IT(&huart1,uart_buf,1);	//开启串口接收中断

//串口接收
u8 uart_buf[2];
u8 rx_buf[10];
u8 rx_cnt = 0;
__IO uint32_t uartTick = 0;
void RxIdle_Process()
{
    if(uwTick - uartTick < 50) return ;
    uartTick = uwTick;
    //50ms执行一次
    rx_cnt = 0;
    memset(rx_buf, '\0', sizeof(rx_buf));		//清空接收缓存数组
}


//串口接收回调函数
v
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

桂北研猛男

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

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

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

打赏作者

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

抵扣说明:

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

余额充值