ppt模板下载的网站/百度推广账户登陆

ppt模板下载的网站,百度推广账户登陆,滕州市东方建设工程事务有限公司网站,日本在线生成个人网站源码目录 一、输出比较简介 二、PWM简介 三、输出比较通道(通用) 四、输出比较通道(高级) 五、输出比较模式 六、PWM基本结构 七、PWM参数计算 八、外设介绍 8.1 舵机 8.2 直流电机及驱动 九、开发步骤 十、输出比较库函数…

目录

一、输出比较简介

二、PWM简介

三、输出比较通道(通用)

四、输出比较通道(高级)

五、输出比较模式

六、PWM基本结构 

七、PWM参数计算

八、外设介绍

8.1 舵机

8.2 直流电机及驱动

九、开发步骤

十、输出比较库函数 

十一、实验

9.1 PWM驱动LED呼吸灯

9.2 PWM驱动舵机

9.3 PWM驱动直流电机


一、输出比较简介

>OC(Output Compare)输出比较
>输出比较可以通过比较CNT与CCR(捕获/比较寄存器)值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形
>每个高级定时器和通用定时器都拥有4个输出比较通道
>高级定时器的前3个通道额外拥有死区生成和互补输出的功能

二、PWM简介

>PWM(Pulse Width Modulation)脉冲宽度调制
>在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域
>PWM参数:
  频率 = 1 / Ts           占空比 = Ton / Ts           分辨率 = 占空比变化步距

三、输出比较通道(通用)

四、输出比较通道(高级)

五、输出比较模式

六、PWM基本结构 

七、PWM参数计算

八、外设介绍

8.1 舵机

8.2 直流电机及驱动

九、开发步骤

①RCC打开时钟,TIM和GPIO外设的时钟打开

②配置时基单元,包括前面的时钟源选择

③结构体配置输出比较单元(CCR,输出比较模式,极性选择,输出使能)

④配置GPIO,PWM对应GPIO初始化为复用推挽输出

⑤运行控制,启动计数器

十、输出比较库函数 

注:标@的为重要,需掌握

@===================输出比较4模块配置函数==============================

void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
void TIM_OC3Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
void TIM_OC4Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);

参数:①定时器;②结构体

=====================================================================

void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct);

//输出比较结构体赋初值

=====================配置强制输出模式(了解即可)========================

void TIM_ForcedOC1Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
void TIM_ForcedOC2Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
void TIM_ForcedOC3Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
void TIM_ForcedOC4Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);

=============配置CCR寄存器的预装功能(影子寄存器)(了解即可)=============

void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
void TIM_OC3PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
void TIM_OC4PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);

=======================配置快速使能(了解即可)==========================

void TIM_OC1FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
void TIM_OC2FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
void TIM_OC3FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
void TIM_OC4FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);

=======================外部事件清除REF信号(了解即可)===================

void TIM_ClearOC1Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
void TIM_ClearOC2Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
void TIM_ClearOC3Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
void TIM_ClearOC4Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);

=======================单独设置输出比较极性=============================

void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
void TIM_OC1NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);

//N高级定时器互补通道的配置
void TIM_OC2PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
void TIM_OC2NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
void TIM_OC3PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
void TIM_OC3NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
void TIM_OC4PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);

=======================单独修改输出使能参数=============================

void TIM_CCxCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx);
void TIM_CCxNCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCxN);

=======================单独更改输出比较模式=============================

void TIM_SelectOCxM(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_OCMode);

@=====================单独更改CCR寄存器值=============================

void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1);
void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2);
void TIM_SetCompare3(TIM_TypeDef* TIMx, uint16_t Compare3);
void TIM_SetCompare4(TIM_TypeDef* TIMx, uint16_t Compare4);

==========================补充========================================

void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState);

//仅高级定时器使用,在使用高级定时器输出PWM时,需要调用这个函数,使能主输出,否则PWM将不能正常输出

十一、实验

9.1 PWM驱动LED呼吸灯

PWM.c

#include "stm32f10x.h"                  // Device header/*PWM初始化*/
void PWM_Init(void)
{/*一、RCC开启时钟,TIM与GPIO时钟打开*/RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//	/*使用重映射(*_*)*/
//	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
//	GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2,ENABLE);//PA0->PA15,部分重映射S
//	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//解除JATG调试GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//(*_*)GPIO_Pin_15GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);/*二、配置时基单元(时钟源选择和时基单元配置)*/TIM_InternalClockConfig(TIM2);//选择内部时钟TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInitStructure.TIM_Period = 100 - 1;		//ARR自动重装器值TIM_TimeBaseInitStructure.TIM_Prescaler = 720 - 1;	//PSC预分频器值TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;//重复计数器值TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);/*三、配置输出比较单元(CCR的值(捕获/比较器),输出比较模式,极性选择,输出使能)*/TIM_OCInitTypeDef TIM_OCInitStructure;TIM_OCStructInit(&TIM_OCInitStructure);//给结构体所有成员赋初始值(有些用不到但是必须赋值)TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//输出比较模式TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//输出比较的极性TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//输出使能TIM_OCInitStructure.TIM_Pulse = 0;//设置CCRTIM_OC1Init(TIM2,&TIM_OCInitStructure);/*四、配置GPIO,复用推挽输出*///一处已操作/*五、运行控制,启动计数器CNT*/TIM_Cmd(TIM2,ENABLE);
}/*封装函数->更改CCR值来改变占空比*/
void PWM_SetCompare1(uint16_t Compare)
{TIM_SetCompare1(TIM2,Compare);
}

PWM.h

#ifndef __PWM_H
#define __PWM_Hvoid PWM_Init(void);
void PWM_SetCompare1(uint16_t Compare);#endif

main.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "PWM.h"uint8_t i;int main(void)
{OLED_Init();PWM_Init();while (1){//CCR增大,逐渐变亮for (i = 0; i <= 100; i++){PWM_SetCompare1(i);Delay_ms(10);}//CCR减小,逐渐变暗for (i = 0; i <= 100; i++){PWM_SetCompare1(100 - i);Delay_ms(10);}}
}

9.2 PWM驱动舵机

实验现象:按下按键,舵机转动固定角度

PWM.c

#include "stm32f10x.h"                  // Device header/*PWM初始化*/
void PWM_Init(void)
{/*一、RCC开启时钟,TIM与GPIO时钟打开*/RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);/*二、配置时基单元(时钟源选择和时基单元配置)*/TIM_InternalClockConfig(TIM2);//选择内部时钟TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInitStructure.TIM_Period = 20000 - 1;		//ARR自动重装器值TIM_TimeBaseInitStructure.TIM_Prescaler = 72 - 1;	//PSC预分频器值TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;//重复计数器值TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);/*三、配置输出比较单元(CCR的值(捕获/比较器),输出比较模式,极性选择,输出使能)*/TIM_OCInitTypeDef TIM_OCInitStructure;TIM_OCStructInit(&TIM_OCInitStructure);//给结构体所有成员赋初始值(有些用不到但是必须赋值)TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//输出比较模式TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//输出比较的极性TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//输出使能TIM_OCInitStructure.TIM_Pulse = 0;//设置CCR(500~2500)TIM_OC2Init(TIM2,&TIM_OCInitStructure);/*四、配置GPIO,复用推挽输出*///一处已操作/*五、运行控制,启动计数器CNT*/TIM_Cmd(TIM2,ENABLE);
}/*封装函数->更改CCR值来改变占空比*/
void PWM_SetCompare2(uint16_t Compare)
{TIM_SetCompare2(TIM2,Compare);
}

PWM.h

#ifndef __PWM_H
#define __PWM_Hvoid PWM_Init(void);
void PWM_SetCompare2(uint16_t Compare);#endif

Servo.c

#include "stm32f10x.h"                  // Device header
#include "PWM.h"//舵机初始化(PWM初始化)
void Servo_Init(void)
{PWM_Init();
}/*
舵机设置角度
角度:0-180
CCR:500-2500
*/
void Servo_SetAngle(float Angle)
{PWM_SetCompare2(Angle / 180 * 2000 + 500);
}

Servo.h

#ifndef __SERVO_H
#define __SERVO_Hvoid Servo_Init(void);
void Servo_SetAngle(float Angle);#endif

Key.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"//===按键初始化===//
void Key_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//上拉输入GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_11;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);
}//===获取按键返回码===//
uint8_t Key_GetNum(void)
{uint8_t KeyNum = 0;if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) == 0){Delay_ms(20);//消抖while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) == 0);//如果不松手则卡着Delay_ms(20);KeyNum = 1;}	if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11) == 0){Delay_ms(20);//消抖while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11) == 0);Delay_ms(20);KeyNum = 2;}return KeyNum;
}

key.h

#ifndef __KEY_H
#define __KEY_Hvoid Key_Init(void);
uint8_t Key_GetNum(void);#endif

main.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "key.h"
#include "Servo.h"uint8_t KeyNum;
float Angle;int main(void)
{OLED_Init();Key_Init();Servo_Init();OLED_ShowString(1,1,"Angle:");while (1){KeyNum = Key_GetNum();if(KeyNum == 1){Angle += 30;if(Angle >180){Angle = 0;}}Servo_SetAngle(Angle);OLED_ShowNum(1,7,Angle,3);}
}

*OLED显示屏代码请参考本专栏文章STM32-OLED显示屏

9.3 PWM驱动直流电机

实验现象: 按键按下,电机加速,达到最大转速时,再按一下,最大速度反转,按下按键,电机减速

PWM.c

#include "stm32f10x.h"                  // Device header/*PWM初始化*/
void PWM_Init(void)
{/*一、RCC开启时钟,TIM与GPIO时钟打开*/RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);/*二、配置时基单元(时钟源选择和时基单元配置)*/TIM_InternalClockConfig(TIM2);//选择内部时钟TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInitStructure.TIM_Period = 100 - 1;		//ARR自动重装器值TIM_TimeBaseInitStructure.TIM_Prescaler = 36 - 1;	//PSC预分频器值TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;//重复计数器值TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);/*三、配置输出比较单元(CCR的值(捕获/比较器),输出比较模式,极性选择,输出使能)*/TIM_OCInitTypeDef TIM_OCInitStructure;TIM_OCStructInit(&TIM_OCInitStructure);//给结构体所有成员赋初始值(有些用不到但是必须赋值)TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//输出比较模式TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//输出比较的极性TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//输出使能TIM_OCInitStructure.TIM_Pulse = 0;//设置CCRTIM_OC3Init(TIM2,&TIM_OCInitStructure);/*四、配置GPIO,复用推挽输出*///一处已操作/*五、运行控制,启动计数器CNT*/TIM_Cmd(TIM2,ENABLE);
}/*封装函数->更改CCR值来改变占空比*/
void PWM_SetCompare3(uint16_t Compare)
{TIM_SetCompare3(TIM2,Compare);
}

PWM.h

#ifndef __PWM_H
#define __PWM_Hvoid PWM_Init(void);
void PWM_SetCompare3(uint16_t Compare);#endif

Motor.c

#include "stm32f10x.h"                  // Device header
#include "PWM.h"void Motor_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);PWM_Init();
}/*设置电机速度(-100~100)*/
void Motor_SetSpeed(int8_t Speed)
{if(Speed >= 0){GPIO_SetBits(GPIOA,GPIO_Pin_4);GPIO_ResetBits(GPIOA,GPIO_Pin_5);PWM_SetCompare3(Speed);}else{GPIO_SetBits(GPIOA,GPIO_Pin_5);GPIO_ResetBits(GPIOA,GPIO_Pin_4);PWM_SetCompare3(-Speed);}
}

Motor.h

#ifndef __PWM_H
#define __PWM_Hvoid Motor_Init(void);
void Motor_SetSpeed(int8_t Speed);#endif

*按键与OLED显示屏的代码参考之前实验代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/219142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日一题,杨辉三角

给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows 1 输出: [[1]]

限流常用算法以及基于Sentinel的微服务限流及熔断

一、服务限流的作用及实现 在没有任何保护机制的情况下&#xff0c;如果所有的流量都进入服务器&#xff0c;很可能造成服务器宕机导致整个系统不可用&#xff0c;从而造成巨大的损失。为了保证系统在这些场景中仍然能够稳定运行&#xff0c;就需要采取一定的系统保护策略&…

Unity_ET框架项目-斗地主_启动运行流程

unity_ET框架项目-斗地主_启动运行流程 项目源码地址&#xff1a; Viagi/LandlordsCore: ET斗地主Demohttps://github.com/Viagi/LandlordsCore下载项目到本地。 启动运行步骤&#xff1a; 下载目录如下&#xff1a; 1. VS&#xff08;我用是2022版VisualStudio&#xff09…

【机器学习】多模态机器学习

多模态机器学习是指利用多种不同的数据类型&#xff08;如图像、文本、音频等&#xff09;来训练和优化机器学习模型。相比于单一模态的机器学习&#xff0c;多模态机器学习可以更好地模拟现实世界中的复杂信息交互&#xff0c;从而提高模型的性能和泛化能力&#xff0c;同时也…

大数据机器学习与深度学习—— 生成对抗网络(GAN)

GAN概述 在讲GAN之前&#xff0c;先讲一个小趣事&#xff0c;你知道GAN是怎么被发明的吗&#xff1f;据Ian Goodfellow自己说&#xff1a; 之前他一直在研究生成模型&#xff0c;可能是一时兴起&#xff0c;有一天他在酒吧喝酒时&#xff0c;在酒吧里跟朋友讨论起生成模型。然…

Linux—深入理解进程的概念,PCB,父子进程及查看进程信息的两种方法

进程的概念 课本概念&#xff1a;程序的一个执行实例&#xff0c;正在执行的程序等。 内核观点&#xff1a;担当分配系统资源&#xff08;CPU&#xff0c;内存&#xff09;的实体。 1.描述进程-PCB 我们知道程序是代码编译好后形成的可执行文件&#xff0c;存放在磁盘上。而我…

Qt设置类似于qq登录页面(ikun)

头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QWindow> #include <QIcon> #include <QLabel> #include <QMovie> #include <QLineEdit> #include <QPushButton>QT_BEGIN_NAMESPACE namespace Ui { class…

Prompt提示优化工具

在大模型使用过程中,Prompt尤为重要。一个好的Prompt可以解决很多的问题。那么如何撰写一个完美的Prompt? 下面汇总了一些Prompt工具,可以辅助日常Prompt的编写。 欢迎关注公众号 1. prompt perfect 可以自动优化已有的提示,比较多个模型的输出,运行智能体等。 https:…

带大家做一个,易上手的家常土豆炒瘦肉(糖醋水果版)

先那一块瘦肉 用水化冰 拿一颗土豆 去皮切成小块 瘦肉洗干净 然后切成小块 与土豆混在一起 打一个鸡蛋 将 鸡蛋液 一小勺淀粉 小半勺生抽 一小勺料酒 用手抓均匀 起锅烧油 倒入瘦肉土豆 翻炒 看肉变色了 加入 一包番茄酱(可以多放一点 味道足一点) 小半勺老抽调色 小半…

文献速递:PET-影像组学专题--影像组学和肺癌免疫治疗反应:文献系统综述

文献速递&#xff1a;PET-影像组学专题–影像组学和肺癌免疫治疗反应&#xff1a;文献系统综述 01 文献速递介绍 肺癌&#xff08;LC&#xff09;是全球癌症相关死亡的主要原因&#xff0c;尽管在诊断和治疗方面取得了进展[2,3]&#xff0c;但它仍然对公共健康构成严重威胁[…

Android : Room 数据库的基本用法 —简单应用_一_入门

1.Room介绍&#xff1a; Android Room 是 Android 官方提供的一个持久性库&#xff0c;用于在 Android 应用程序中管理数据库。它提供了一个简单的 API 层&#xff0c;使得使用 SQLite 数据库变得更加容易和方便。 以下是 Android Room 的主要特点&#xff1a; 对象关系映射…

无代码,零基础!手把手教你掌握Stable Diffusion,创作出惊艳AI插画!

【前言】 Stable Diffusion是一款开源、免费的应用程序&#xff0c;因为其生态开放且发展迅速&#xff0c;所以不同时期的安装、配置方式可能都会有所变化。如果遇到什么安装上的问题可以评论提出&#xff0c;帮你解答。 关于Stable Diffusion Stable Diffusion&#xff08;简…

IDEA中工具条中的debug按钮不能用了显示灰色

IDEA中工具条中的debug按钮不能用了显示灰色 1. 问题描述 IDEA上的DEBUG按钮突然变成了灰色&#xff1a; 2. 解决办法 一通搜索&#xff0c;终于找到解决办法 点击 File -> Project Structure如下图操作 3. 重启&#xff0c;解决 4. 参考 https://www.cnblogs.com…

自学编程推荐一个容易学的中文编程工具,构件箱之单选框组简介

一、前言&#xff1a; 零基础自学编程&#xff0c;中文编程工具下载&#xff0c;中文编程工具构件之扩展系统菜单构件教程 编程系统化教程链接https://jywxz.blog.csdn.net/article/details/134073098?spm1001.2014.3001.5502 给大家分享一款中文编程工具&#xff0c;零基础轻…

C语言之基本数据类型和数

目录 算数类型和基本数据类型 基数 基数转换 由八进制数、十六进制数、二进制数向十进制数转换 由十进制数向八进制数、十六进制数、二进制数转换 二进制和十六进制的基数转换 在学习基本数据类型之前我们先来学习数。 算数类型和基本数据类型 在前面的学习中我们可以使用…

Docker 设置国内镜像源

Docker 设置国内镜像源 您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器 具体配置如下&#xff1a; {"registry-mirrors" : ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirro…

Flutter Dart FFI Pointer<Uint8>类型如何转成数组或String

前言 继上一次发布的 Flutter 直接调用so动态库&#xff0c;或调用C/C源文件内函数 内容&#xff0c;最终我选择了第二种方式&#xff0c;直接把整个 Native C 的项目源代码放进了 Flutter 工程里编译&#xff08;放在iOS的目录是因为它不支持自定义源码路径&#xff0c;Andro…

阶段十-java新特性

JDK9新特性 1.模块化系统 jar包结构的变化 jar -》model -》package -》class 通过不同的模块进行开发 每个模块都有自己的模块配置文件module-info.java 2.JShell JDK9自带的命令行开发&#xff0c;在进行简单的代码调试时可以直接编译使用 可以定义变量&#xff0c;方法&…

大数据与人工智能——神经网络是如何工作的?

大数据与人工智能——神经网络是如何工作的&#xff1f; 我们习惯于去了解所使用工具、中间件的底层原理&#xff0c;本文则旨在帮助大家了解AI模型的底层机制&#xff0c;让大家在学习或应用各种大模型时更加得心应手&#xff0c;更加适合没有AI基础的小伙伴们。 一、GPT与神…

Java实现机考程序界面

机考界面如下&#xff08;单选题&#xff09;&#xff0c;上方是题目状态&#xff0c;下方是题目&#xff0c;1/5/1是已做题目数量、总共题目数量和答对题目数量。 再看一下多选题的界面。 判断题的界面。 回答正确时的反馈&#xff0c;会给出用时。 回答错误时的反馈&#xff…