• 蓝桥杯嵌入式总结


    用到外部时钟:UART,ADC,RTC

    用到中断:UART,TIM

    LED_KEY:

    将高低电平写入对应引脚

    HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);    

    读取对应引脚的电平状态

    HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)

    UART:

    发送:

    int fputc(int ch, FILE *f)         重定义中断发送,要包含#include "stdio.h"

    HAL_UART_Transmit(&huart1,(u8 *)&ch,1,40);        串口发送数据

    接收:

    中断接收回调函数

    void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

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

    memset(&rx_buf,'\0',sizeof(rx_buf));   将数组里的字符清0,要包含#include"string.h"

    ADC:

    HAL_ADC_Start(&hadc1);        开启ADC转换

    HAL_ADC_GetValue(&hadc1);      获取转换后的值,要得到电压值需再*3.3f/4096

    I2C:

    void EEPROM_write(uint8_t addr,uint8_t data)

    uint8_t  EEPROM_read(uint8_t addr)

    void MCP4017_write(uint8_t data)

    uint8_t MCP4017_read()        读时需要*0.78740

    TIM:

    输入捕获:

    输入捕获中断回调函数

    void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)

    TIM2->CCER |=0x02;     调整下次捕获为下降沿触发

    TIM2->CCER &=~0x02; 调整下次捕获为上升沿触发

    __HAL_TIM_SetCounter(&htim2,0);  将计数值清零

    __HAL_TIM_GetCounter(&htim2);    获取当前计数值

    HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);        打开输入捕获中断

    输出比较:

    HAL_TIM_PWM_Start(&htim17,TIM_CHANNEL_1);        打开PWM输出比较

    RTC:

    HAL_RTC_GetTime(&hrtc,&rtc_time,RTC_FORMAT_BIN);
    HAL_RTC_GetDate(&hrtc,&rtc_data,RTC_FORMAT_BIN);

  • 相关阅读:
    springboot集成dubbo配置多注册中心
    一款云渗透工具 - Sea Moon
    Centos7上关机流程
    openssl尽量不要动啊,成功恢复记录
    【多线程】Thread类的基本用法
    常见的限流算法与实现
    【QT】C++单冒号‘:’和双冒号‘::’的大白话讲解
    怎样来实现流量削峰方案
    vue中如何快速的让某个元素全屏 ——利用screenfull插件
    iptables防火墙
  • 原文地址:https://blog.csdn.net/m0_73075546/article/details/137403185