- 博客(20)
- 收藏
- 关注
原创 stm32实现波形发生器
#include “dac.h”//DAC 通道 1 输出初始化void Dac1_Init(void){GPIO_InitTypeDef GPIO_InitStructure;DAC_InitTypeDef DAC_InitType;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE ); //①使能 PA 时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE ); //②使能DAC时钟G
2020-06-21 15:55:42
3787
原创 stm32实现定时器中断
13.2 硬件设计本实验用到的硬件资源有:1) 指示灯 DS0 和 DS12) 定时器 TIM3本章将通过 TIM3 的中断来控制 DS1 的亮灭,DS1 是直接连接到 PE5 上的,这个前面已经有介绍了。而 TIM3 属于 STM32 的内部资源,只需要软件设置即可正常工作。13.3 软件设计软件设计我们直接打开我们光盘实验 8 定时器中断实验即可。我们可以看到我们的工程中的 HARDWARE 下面比以前多了一个 time.c 文件(包括头文件 time.h),这两个文件是我们自己编
2020-06-21 15:14:02
1401
转载 stm32实现秒表及万年历
秒表/普通按键初始化函数****通用定时器中断初始化这里时钟选择为APB1的2倍,而APB1为36Marr:自动重装值。psc:时钟预分频数这里使用的是定时器3!******************************************************/void TimerxInit(u16 arr, u16 psc){RCC->APB1ENR |= 1<<1; //TIM3时钟使能TIM3->ARR = arr;
2020-06-21 14:49:57
5665
原创 数字温度传感器
#include “ds18b20.h”#include “delay.h”//复位 DS18B20void DS18B20_Rst(void){DS18B20_IO_OUT(); //SET PA0 OUTPUTDS18B20_DQ_OUT=0; //拉低 DQdelay_us(750); //拉低 750usDS18B20_DQ_OUT=1; //DQ=1delay_us(15); //15US}//等待 DS18B20 的回应//返回 1:未检测到 DS18B20 的存在//
2020-06-21 14:42:39
901
原创 stm32设计电压监测器
在实际工程运用中需要对突发情况作出及时的相应,通常都需要考虑当系统电压下降或断电时,需要对控制系统加以保护。这时候就需要在程序中加入系统电压监测(PVD)。供电电压降低到某一个电压值时,需要系统进入保护状态,执行紧急关闭任务(对系统数据进行保存,并对外设进行相应的保护操作)。传统单片机例如STC12C60S2,其自带A/D,可以利用A/D对工作电压进行检测,每隔一段时间进行比较,如果异常进入保护模式,进行相关的保护措施。但是这种方法不但会占用MCU处理时间,而且利用ADC也增加了系统的功耗。STM32就可以
2020-06-21 09:32:20
2431
原创 嵌入式项目最终版——workstation.cpp
#include<winsock2.h>#include<stdio.h>#include<string.h>#include#include"ByteQueue.h"#include"NioService_workstation.h"#include"trans.h"using namespace std;#pragma comment(lib,“ws2_32.lib”)define BUFFER_SIZE 1024 //缓冲区大小struc
2020-06-21 08:57:25
198
原创 嵌入式项目最终版——ByteQueue.h
#ifndef BYTEQUEUE_H#define BYTEQUEUE_H#include<stdlib.h>class ByteQueue {private:int head, rear, size; //head指向第一个元素前的空位,rear指向队尾元素 //isfull = 1表示队满,isempty = 1表示队空char* buf;public:ByteQueue();~Byte
2020-06-21 08:56:01
396
原创 嵌入式项目最终版——transducer.h
#ifndef TRANSDUCER_H#define TRANSDUCER_H#include#include<string.h>#include<time.h>#include<stdio.h>#include <stdlib.h>#include using namespace std;class Transducer {private:int id, num1, num2; // 应记录historyvalues数组是否已
2020-06-21 08:54:36
143
原创 嵌入式项目最终版——trans.h
#ifndef TRANS_H#define TRANS_H#include#include"ByteQueue.h"using namespace std;/* DHT11发送的是二进制的数据:8位温度小数+8位温度整数+8位湿度小数+8位湿度整数;该函数用于把收到的二进制数据转化成10进制 */double trans(ByteQueue& DHT11_data) {int INT = 0;double DEC = 0, ans;for (int i = 0; i <
2020-06-21 08:52:39
236
原创 嵌入式项目最终版——nioservice_sensor.h
#ifndef NIOSERVICE_SENSOR_H#define NIOSERVICE_SENSOR_H#include<winsock2.h>#include<stdio.h>#define BUFFER_SIZE 1024 //缓冲区大小class NioService {private:int fromlen;char cmd[BUFFER_SIZE];SOCKET sockServer;SOCKADDR_IN addr_Server;SOCK
2020-06-20 21:48:34
376
原创 嵌入式项目最终版——nioservice_workstation.h
#ifndef NIOSERVICE_WORKSTATION_H#define NIOSERVICE_WORKSTATION_H#include<winsock2.h>#include<stdio.h>define BUFFER_SIZE 1024 //缓冲区大小class NioService {private:SOCKET sock_Client;SOCKADDR_IN addr_server;SOCKADDR_IN sock;int len;pub
2020-06-20 21:47:07
468
原创 嵌入式项目最终版——sensor.cpp
#include<winsock2.h>#include<stdio.h>#include<string.h>#include#include <stdlib.h>#include <time.h>#include"Transducer.h"#include"NioService_sensor.h"using namespace std;#pragma comment(lib,“ws2_32.lib”)#define BUFFE
2020-06-20 21:45:35
314
原创 嵌入式系统大项目——UDP通信的框架
workstation.cpp#include<winsock2.h>#include<stdio.h>#include<string.h>#includeusing namespace std;#pragma comment(lib,“ws2_32.lib”)define BUFFER_SIZE 1024 //缓冲区大小int main(){SOCKET sock_Client; //客户端用于通信的SocketWSADATA WSAData
2020-06-20 21:42:35
538
转载 NIO实现的客户端与通信端范例
public class NIOServer {private static int BUFF_SIZE=1024;private static int TIME_OUT = 2000;public static void main(String[] args) throws IOException { Selector selector = Selector.open(); ServerSocketChannel serverSocketChannel=ServerSocketC
2020-06-20 21:39:56
200
转载 NIO实现的客户端与服务端之间的通信
1 服务端启动类public class TimeServer {public static void main(String[] args) {int port = 8080;//这个类负责轮询多路复用器 selectorMultiplexerTimerServer mts = new MultiplexerTimerServer(port);//单独开启一个线程来执行mts服务new Thread(mts,“NIO-MultiplexerTimerServer-001”).start();
2020-06-20 21:38:39
513
转载 windows系统下UDP通信的具体实现
Winsock 编程模型Winsock 编程的主要模型分为流套接字编程模型和数据报套接字编程模型两类,主要区别在于:前者提供双向的、有序的、无重复并且无记录边界的数据流服务,即采用有连接的数据传输服务,保证数据可靠到达;后者也支持双向数据流,但不能保证数据的可靠、有序和无重复,它保留了记录边界,是一种无连接、不可靠的数据传输模型。数据报套接字编程模型数据报套接字使用UDP 协议进行数据的传输,是一种无连接的数据传输模型,编程过程相对简单,采用客户/服务器(C/S)结构进行设计。在数据报套接.
2020-06-20 21:36:16
1272
转载 C语言实现UDP
#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <string.h>#define SERVER_PORT 8888#define BUFF_LEN 1024void handle_udp_msg(int fd){char buf[BUFF_LEN]; //接收缓冲区,1024字节soc
2020-06-20 21:34:24
2462
转载 UDP通信的socket编程
TCP/IP协议叫做传输控制/网际协议,又叫做网络通信协议。实际上,它包括上百个功能的协议。套接字(socket):在网络中用来描述计算机中不同程序与其他计算程序的通信方式。套接字分为三类;流式socket(SOCK_STREAM):提供可靠,面向连接的通信流;它使用TCP协议,从而保证了数据传输的正确性和顺序性。数据报socket(SOCK_DGRAM):数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,无序的,并且不保证可靠,无差错的。它使用的数据报协议是UDP。原始sock
2020-06-20 21:33:12
281
转载 TCP和UDP的socket编程
一。 server端:复制代码1 #include “stdafx.h”2 #include <stdio.h>3 #include <winsock2.h>45 #pragma comment(lib,“ws2_32.lib”)67 int main(int argc, char* argv[])8 {9 //初始化WSA10 WORD sockVersion = MAKEWORD(2,2);11 WSADATA wsaData;
2020-06-20 21:31:52
165
转载 windows下的udp范例
发送端代码:#include #include #include <winsock.h>#pragma comment(lib, “ws2_32.lib”)using namespace std;int main(){WSADATA WSAdata;if (!WSAStartup(MAKEWORD(2, 2), &WSAdata)){ cout << "初始化成功" << endl;}else{ cout << "初始化失
2020-06-17 11:30:10
295
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人