串口

实验三 定时器相关模块实验

时间秒杀一切 提交于 2020-01-11 01:48:18
一.实验目的 (1)熟悉定时中断计时的工作及编程方法 (2)理解定时器模块的输入捕捉、输出比较、脉宽调制(PWM)功能的基本原理。 (3)掌握定时器模块的输入捕捉、输出比较、脉宽调制(PWM)编程方法。 (4)理解 PWM 占空比的含义。 (5)进一步深入理解 MCU 和 C#串口通信的编程方法。 二.实验内容 1.验证性实验 1)验证样例程序(ch07-Timer)中(TPM-Timer),主要功能是实现通过开发板上 TPM0计数,10ms 产生一次中断,每中断 100 次累加计时,并通过调试串口输出“MCU 记录的相对时间:00:00:01”,“00:00:01”为中断记录的时间,同时蓝色指示灯闪烁一次。 实验步骤如下: (1)将样例 TPM-Timer 程序下载至目标板; (2)将“TTL-USB 串口线”的“USB 端口”接 PC 机的 USB 口,串口线的串口接开发板上的串口 2(3 根,RX 接蓝线,TX 接白线,GND 接黑线); (3)打开串口调试工具或 ch06-UART 文件夹中的“C#2010 串口测试程序”进行串口通信测试; (4)分析理解 main.c 程序和中断服务例程 isr.c。 2)验证样例程序(ch07-Timer)中(TPM-incap-outcomp-pwm),主要功能是实现在 TPM1中断服务例程中,改变 TPM1 模块通道 0 占空比

Linux USB串口驱动代码分析

守給你的承諾、 提交于 2020-01-11 01:01:10
4、USB serial 驱动代码分析 文件: drivers/usb/serial/usb-serial.c usb_serial_init(void) |---alloc_tty_driver /*分配serial驱动,最多支持512个USB Serial*/ | |---tty_alloc_driver | |---__tty_alloc_driver | |---kzalloc | |---bus_register /*注册USB Serial 总线*/ | |---usb_serial_tty_driver /*设置驱动名、设备名、主次设备号、传输模式、速率*/ | |---tty_set_operations /*设置Serial的操作方法*/ | |---tty_operations | |---tty_register_driver /*注册tty驱动*/ | |---tty_register_device | | |---tty_register_device_attr /*注册一个tty设备*/ | | | `---proc_tty_register_driver /*注册到/proc/tty/driver/*/ | |---usb_register /*注册USB驱动*/ | `---usb_serial_generic_register /*注册通用驱动*/

串口有关内容

亡梦爱人 提交于 2020-01-10 22:08:07
  1.串口配置过程 int main(void) { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); usart1init(); while(1) { } } void usart1init(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); //ê1?üUSART1£?GPIOAê±?ó GPIO_InitTypeDef g; g.GPIO_Pin = GPIO_Pin_9; g.GPIO_Speed = GPIO_Speed_50MHz; g.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &g); g.GPIO_Pin = GPIO_Pin_10; g.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &g); USART_InitTypeDef u; u.USART_BaudRate=115200; u.USART_HardwareFlowControl=USART_HardwareFlowControl_None; u.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; u.USART

HC-05的使用-详细

故事扮演 提交于 2020-01-10 21:39:02
蓝牙转串口模块HC-05模块使用记录 最近在弄一个需要无线传输数据的项目,虽然以前也接触过HC-05这个模块,但是始终只是知道简单的使用,借这个机会更加深入的学习一下这个模块。 初识HC-05 BLK-MD-HC-05蓝牙模块是专为智能无线数据传输而打造,采用英国CSR公司BlueCore4-Ext芯片,遵循V2.0+EDR蓝牙规范。 本模块支持 UART,USB,SPI,PCM,SPDIF 等接口,并支持SPP蓝牙串口协议,具有成本低、体积小、功耗低、收发灵敏性高等优点,只需配备少许的外围元件就能实现其强大功能。 该模块主要用于短距离的数据无线传输领域。可以方便的和 PC 机的蓝牙设备相连,也可以两个模块之间的数据互通。避免繁琐的线缆连接,能直接替代串口线。不细讲,分享出技术手册见链接。 软件部分 HC-05 嵌入式蓝牙串口通讯模块(以下简称模块)具有两种工作模式:命令响应工作模式和自动连接工作模式,在自动连接工作模式下模块又可分为主(Master)、从(Slave)和回环(Loopback)三种工作角色。当模块处于自动连接工作模式时,将自动根据事先设定的方式连接的数据传输;当模块处于命令响应工作模式时能执行下述所有 AT 命令,用户可向模块发送各种 AT 指令,为模块设定控制参数或发布控制命令。通过控制模块外部引脚(PIO11)输入电平,可以实现模块工作状态的动态转换。 HC

MFC串口热拔插与可用串口自动检测的实现方法

我的未来我决定 提交于 2020-01-10 21:17:14
MFC串口热拔插与可用串口自动检测的实现方法 在网上看找了很多关于串口自动检测检测与热拔插的实现,感觉比较麻烦,很多不能直接拿过来用。笔者参考了网上的一些方法,自己写了一个比较简单的实现方式。由于本人水平有些,不足之处请谅解! 主要可分为以下几个部分 1.CSerialportDlg.h中添加以下代码 protected : //实现串口热插拔 afx_msg BOOL OnDeviceChange ( UINT nEventType , DWORD dwData ) ; afx_msg void RefreshCom ( void ) ; BOOL EnumSerialPort ( CStringArray & saCom ) ; 2.CSerialportDlg.c中添加以下代码 主要是对头文件的三个函数声明的代码实现 # include <Dbt.h> //需要在CSerialportDlg.c的头文件中添加此头文件 //否则OnDeviceChange(函数中的宏定义会报错) BOOL CSerialportDlg :: OnDeviceChange ( UINT nEventType , DWORD dwData ) { switch ( nEventType ) { //串口被移除 case DBT_DEVICEREMOVECOMPLETE : RefreshCom (

STM32串口遇到的一个问题

夙愿已清 提交于 2020-01-10 19:43:26
做HLW8032电能表项目中关于USART使用DMA接收定长数据的问题 1:由于HLW8032芯片一上电,芯片就会通过串口每隔50ms向STM32发送24字节的数据,且我不能通过STM32控制HLW8032发送数据,由于STM32初始化需要一段时间,所以当STM32接收数据时会出现丢包的情况。。 2:解决方法:使用USART空闲中断,在初始化时先不使能串口DMA,只打开串口,在STM32串口空闲时,跳入串口空闲中断, 先判断数据是否正确,是否接收到24个字节的数据,如果数据校验错误,将缓冲区清零,如果数据正确,关掉串口空闲中断,最后使能串口DMA和DMA。 //串口1中断 //做数据发送结束判断 void USART1_IRQHandler() { uint32_t clear=0; uint8_t i=0; if(USART_GetITStatus(DEBUG_USARTx,USART_IT_IDLE)!=RESET) { //判断数据是否正确 if(DMA_GetCurrDataCounter(DMA1_Channel5)!=24||Check_True_Data()==0) { //数组清零 for(i=0;i<24;i++) { DMA_Recive_Data[i]=0; } } else if(DMA_GetCurrDataCounter(DMA1_Channel5)=

C# 串口收发异常,偶尔有某个收不到,断点计数都断不到,原因分析(1)

两盒软妹~` 提交于 2020-01-10 19:25:05
经了解:C#消息机制是消息流水线响应机,不能同时进行。 C# 数据更新是在Timer,分析:可能是在进行time任务时,不能进行invoke接收任务。之后我打算开个多线程试试或把接收中处理精简看看能不能收到。 private void Form1_Load(object sender, EventArgs e) { ........ //定时器 System.Timers.Timer aTimer = new System.Timers.Timer(); aTimer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed); aTimer.Interval = 3; aTimer.AutoReset = true;//设置是执行一次(false)还是一直执行(true); aTimer.Enabled = true; //是否执行System.Timers.Timer.Elapsed事件; .......... } void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { ComStatusdeal(); } //接收在 sp.DataReceived += new SerialDataReceivedEventHandler

linux的串口驱动分析

旧时模样 提交于 2020-01-10 05:59:38
1、串口驱动中的数据结构 • UART驱动程序结构: struct uart_driver 驱动 • UART端口结构: struct uart_port 串口 • UART相关操作函数结构: struct uart_ops 串口操作函数集 • UART状态结构: struct uart_state 串口状态 • UART信息结构: struct uart_info 串口信息 2、串口驱动程序-初始化 3、串口驱动分析-打开设备 static int s3c24xx_serial_startup(struct uart_port *port) { struct s3c24xx_uart_port *ourport = to_ourport(port); int ret; dbg("s3c24xx_serial_startup: port=%p (%08lx,%p)\n", port->mapbase, port->membase); rx_enabled(port) = 1; ret = request_irq(ourport->rx_irq, s3c24xx_serial_rx_chars, 0, s3c24xx_serial_portname(port), ourport); if (ret != 0) { printk(KERN_ERR "cannot get irq %d

友善mini2440裸机开发原理+源码

一个人想着一个人 提交于 2020-01-10 03:36:13
友善mini2440裸机开发源码 源码+开发工具 开发工具:minitools、gcc-4.4.3、vim等 **我们需要先设置cpu工作模式+关闭看门狗+关闭中断后再执行我们自己的代码,因为本文是将代码下载到内存中运行,所以不具备跳转绝对地址的能力,也就不能处理中断。 1. led mini2440有4个可供用户编程的led,分别是nled_1、nled_2、nled_3、nled_4: 他们分别连向GPB5、6、7、8,由于这里的led接入了上拉电阻,我们的cpu引脚应输出0而使led发光,输出1led熄灭。 接下来,我们先查看s3c2440的用户手册,找到GPB组的寄存器组: 这里就是我们需要编程的寄存器。第一个是GPB组IO的控制寄存器,用于选择配置引脚工作模式,第二个是数据寄存器,如果引脚被配置为输入口或其他功能口,我们将从这个寄存器中读出对应的数据。如果作为输出口,我们就从这个寄存器中写入需要输出的数据。最后是上拉寄存器。s3c2440每个GPIO的引脚都内部配置了上拉功能,不需要的时候写1关闭即可。 代码链接: https://download.csdn.net/download/weixin_38716790/12085350 2. 串口 mini2440有3个可编程串口,分别是串口0、1、2,其中串口0已经接了RS232接口出来

通过串口连接设置来管理终端交换机

本小妞迷上赌 提交于 2020-01-09 18:44:02
交换机是校园网系统的交通枢纽,其管理特性决定了校园网的整体性能。有些可网管交换机并没有默认的IP地址,所以初始配置时不能通过Telnet、Web来管理。这时,我们就需要通过串口来管理交换机。 下面,我们就来演练一下如何用串口管理交换机。 一、连接交换机和PC 首先,需要先把PC和交换机连接在一起,这样才能进行管理。可网管型交换机都附带一条串口电缆,供网管员进行本地管理。先把串口电缆的一端插在交换机背面的Console口上,同时拧好螺钉,防止接触不良。串口线的另一端插在普通PC的串口上,此时要记住电缆插在COM1还是COM2口上,以后设置会用得着。 二、设置“超级终端” 连接好后,接通交换机和电脑电源并开机。Windows 98/Me/2000都提供“超级终端”服务,如果没有可以在“添加/删除程序”中的“通讯”组内添加。你也可以使用其他符合VTY100(终端的一种标准,现在很少见)标准的终端模拟程序。 在第一次运行“超级终端”时,系统默认为通过Modem连接,会要求用户输入连接的区号,随便输入一个即可。如果你的电脑中没有安装Modem,则会提示“在连接之前必须安装调制解调器,现在就安装吗?”,这里点击[否]按钮。 程序运行之后会提示你建立一个新的连接名称,我们在这里输入“Switch”。点击[确定]按钮后,会出现一个窗口,要求用户选择连接时使用哪一个端口。这里一定要注意