hai库使用

这篇博客介绍了如何在STM32F103C8单片机上使用HAI库配置RCC和RTC模块,包括使能外部低速时钟和RTC中断,设置RTC输出,并利用HAL库通过USART1发送当前时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、HAI生成

芯片选STM32F103C8
RCC配置,这个要使能外部低速时钟,SYS配置可以不用变
在这里插入图片描述
RTC模块使能时钟源和使能日历,同时将RTC_OUT选择为no rtc output,以及把下面的中断加上
RTC_OUT是是否使能tamper(PC13)引脚上输出校正的秒脉冲时钟。
在这里插入图片描述
在parameter setting模块可以初始化时间,也可以选择在代码里初始化时间
在这里插入图片描述
要用串口发送信息,所以使能一个usart1
在这里插入图片描述

打开keil,直接使用hal库自带的函数输出当前时间,下面是main.c函数代码,记得在target里勾选use microlib

/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : main.c
  * @brief          : Main program body
  ******************************************************************************
  * @attention
  *
  * <h2><center>&copy; Copyright (c) 2021 STMicroelectronics.
  * All rights reserved.</center></h2>
  *
  * This software component is licensed by ST under BSD 3-Clause license,
  * the "License"; You may not use this file except in compliance with the
  * License. You may obtain a copy of the License at:
  *                        opensource.org/licenses/BSD-3-Clause
  *
  ******************************************************************************
  */
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "rtc.h"
#include "usart.h"
#include "gpio.h"
#include "stdio.h"


int fputc(int ch,FILE *f){
   
 uint8_t temp[1]={
   ch};
 HAL_UART_Transmit(&huart1,temp,1,2);
 return ch;
}

/* Private includes ------------------------------
在讨论“hai”上位机数据取反之前,首先需要明确几个概念:“hai”并非一个通用的标准术语,在通常的技术文献或软件工程领域并没有直接关联的内容。因此我推测您可能是想提到的是某个特定硬件(如HAI某系列模块)相关的通信协议、或者是某种自定义函数集。 假设您的问题是关于如何在一个与上位机交互的过程中对从该设备获取的数据进行按位取反操作: 对于从上位机接收到的数据如果想要对其进行"取反"处理,则意味着将每个二进制位0变为1, 1变成为0的过程。 以下是Python语言的一个简单例子说明这一过程: ```python # 模拟从上位机读取到的一组字节型数据 data_from_upper_computer = b'\x48\x65\x6c\x6c\x6f' def bit_inversion(data): # 对每一个byte类型的元素做异或运算(^)与0xFF (即255), 实现每一位的反转. inverted_data = bytes([b ^ 0xFF for b in data]) return inverted_data inverted_result = bit_inversion(data_from_upper_computer) print("原始数据:", data_from_upper_computer.hex()) print("取反后的结果:", inverted_result.hex()) ``` 上述代码片段演示了怎样通过遍历输入bytes对象中的所有单个字节,并应用`^ 0xFF`来进行逐位求补操作,最终得到一个新的bytes对象包含经过取反转换后的值。 请注意实际应用场景下还需考虑通讯校验、高低电平表示方式等细节问题;另外根据具体使用的编程环境及目标平台的不同可能会有不同的实现方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值