MSP430F5529 DriverLib 库函数学习笔记(九)SPI

目录

  • 硬知识
    • USCI的同步模式
      • SPI概述
      • SPI特性及结构框图
      • 同步操作原理与操作
      • USCI寄存器——SPI模式
  • USCI_x_SPI API (机翻)
    • 处理状态和初始化的函数
      • 参数
    • 处理数据的函数
      • 参数
    • 管理中断的函数
      • 参数
    • DMA相关
      • 参数

平台:Code Composer Studio 10.3.1
MSP430F5529 LaunchPad™ Development Kit
(MSP‑EXP430F5529LP)


硬知识

USCI的同步模式

SPI概述

       SPI(Serial Peripheral Interface)为串行外设接口的简称,它是一种同步全双工通信协议。MSP430F5xx/6xx系列单片机的USCI_A和USCI_B模块都支持SPI通信模式。SPI通信模块通过3线(SOMI、SIMO、CLK)或者4线(SOMI、SIMO、CLK及STE)同外界进行通信。下面对这4根线进行简要说明。
       ① CLK:CLK为SPI通信时钟线。该时钟线由主机控制,即传送的速率由主机编程决定。
       ② SOMI:SOMI(Slave Output Master Input)即主入从出引脚。如果设备工作在主机模式,该引脚为输入;如果设备工作在从机模式,该引脚为输出。
       ③ SIMO:SIMO(Slave Input Master Output)即从入主出引脚。如果设备工作在主机模式,该引脚为输出;如果设备工作在从机模式,该引脚为输入。
       ④ STE:STE(Slave Transmit Enable)即从机模式发送/接收控制引脚,控制多主或多从系统中的多个从机。在其他应用场合中,也经常被写为片选CS(Chip Select)和从机选择SS(Slave Select)。
       SPI通信模块硬件功能很强,致使SPI通信软件实现相当简单,使CPU有更多的时间处理其他事情。SPI通信原理也比较简单,如图所示。
在这里插入图片描述

SPI特性及结构框图

       当MSP430单片机USCI模块控制寄存器UCAxCTL0或UCBxCTL0的UCSYNC控制位置位,USCI模块工作在同步SPI模式,通过配置该寄存器中的UCMODEx控制位,可使SPI模块工作在三线或四线SPI通信模式下。MSP430的同步通信模式具有如下特点:
 7位或8位数据长度;
 最高有效位在前或者最低有效位在前的数据发送和接收;
 支持3线或4线SPI操作;
 支持主机模式或从机模式;
 具有独立的发送和接收移位寄存器;
 具有独立的发送和接收缓冲寄存器;
 具有连续发送和接收能力;
 时钟的极性和相位可编程;
 主模式下,时钟频率可编程;
 具有独立的接收和发送中断能力;
 LPM4下的从模式工作。
       USCI模块配置为SPI模式下的结构框图如图所示。
在这里插入图片描述

同步操作原理与操作

(1)SPI的主机模式
        MSP430单片机的USCI模块作为SPI通信功能使用时,作为主机与另一具有SPI接口的SPI从机设备的连接图如图所示。
       当控制寄存器UCAxCTL0/UCBxCTL0中的UCMST=1时,MSP430单片机的SPI通信模块工作在主机模式。USCI模块通过在UCxCLK引脚上的时钟信号控制串行通信。串行通信发送工作由发送缓冲区UCxTXBUF、发送移位寄存器和UCxSIMO引脚完成。当移位寄存器为空,已写入发送缓冲区的数据将移入发送移位寄存器,并启动在UCxSIMO引脚的数据发送,该数据发送是最高有效位还是最低有效位在前,取决于UCMSB控制位的设置。串行通信接收工作由UCxSOMI引脚、接收移位寄存器和接收缓冲区UCxRXBUF完成。UCxSOMI引脚上的数据在与发送数据时相反的时钟沿处移入接收移位寄存器,当接收完所有选定位数时,接收移位寄存器中的数据移入接收缓冲寄存器UCxRXBUF中,并置位接收中断标志位UCRXIFG,这标志着数据的接收/发送已经完成。
在这里插入图片描述
(2)SPI的从机模式
       MSP430单片机的USCI模块作为SPI通信功能使用时,作为从机与另一具有SPI接口的SPI主机设备的连接图如图所示。
当控制寄存器UCAxCTL0/UCBxCTL0中的UCMST=0时,MSP430单片机的SPI通信模块工作在从机模式。在从机模式下,SPI通信所用的串行时钟来源于外部主机,从机的UCxCLK引脚为输入状态。数据传输速率由主机发出的串行时钟决定,而不是内部的时钟发生器。在UCxCLK开始前,由UCxTXBUF移入移位寄存器中的数据在主机UCxCLK信号的作用下,通过从机的UCxSOMI引脚发送给主机。同时,在UCxCLK时钟的反向沿UCxSIMO引脚上的串行数据移入接收移位寄存器中。当数据从接收移位寄存器移入接收缓冲寄存器UCxRXBUF中时,UCRXIFG中断标志位置位,表明数据已经接收完成。当新数据被写入接收缓冲寄存器时,前一个数据还没有被取出,则溢出标志位UCOE将被置位。
在这里插入图片描述
(3)串行时钟控制
       串行通信所需的时钟线UCxCLK由SPI总线上的主机提供。当UCMST=1时,串行通信所需的时钟由USCI时钟发生器提供,通过UCSSELx控制位选择用于产生串行通信时钟的参考时钟,最终串行通信时钟由UCxCLK引脚输出。当UCMST=0时,USCI时钟由主机的UCxCLK引脚提供,此时USCI不使用时钟发生器,不考虑UCSSELx控制位。SPI的接收器和发送器并行操作,且数据传输使用同一个时钟源。
串行通信时钟速率控制寄存器(UCxxBR1和UCxxBR0)组成的16位UCBRx的值,是USCI时钟源BRCLK的分频因子。在主模式下,USCI模块能够产生的最大串行通信时钟是BRCLK。SPI模式下不可使用调制器,即SPI串行通信时钟发生器不支持小数分频,所以USCI工作在SPI模式下的时钟发生器产生频率计算公式为
在这里插入图片描述
(4)SPI通信时序图
       SPI通信时序图如图所示。其中,CKPH和CKPL为UCxCLK的极性和相位控制位,在此对这两个控制位进行简要介绍。CKPH为UCxCLK的相位控制位,CKPL为UCxCLK的极性控制位。两个控制位如何设置对通信协议没有什么影响,只是用来约定在UCxCLK的空闲状态和从什么位置开始采样信号。当CKPH=0时,意味着发送在以UCxCLK第一个边沿开始采样信号,反之则在第二个边沿开始。当CKPL=0时,意味着时钟总线低电平空闲,反之则是时钟总线高电平空闲。当信号线稳定时,进行接收采样,当接收采样时,信号线不允许发生电平跳变。
在这里插入图片描述
(5)SPI中断
       USCI模块只有一个中断向量,发送和接收共用该向量。USCI_Ax和USCI_Bx不共用同一个中断向量。
① SPI发送中断操作
       若UCTXIFG置位,表明发送缓冲寄存器UCxTXBUF为空,可以向其写入新的字符。如果UCTXIE和GIE也置位,将产生发送中断请求。如果将字符写入UCxTXBUF缓冲区,UCTXIFG将会自动复位,因此可利用发送中断服务程序不断向发送缓冲寄存器UCxTXBUF写入新的数据,完成数据的传输。注意当UCTXIFG=0时,写数据到UCxTXBUF缓冲区,将可能会导致错误的数据发送。
② SPI接收中断操作
       每当接收到一个字符,并把字符装载到接收缓冲寄存器UCxRXBUF时,将置位接收中断标志位UCRXIFG。如果UCRXIE和GIE也置位时,将产生一个接收中断请求。当接收缓冲寄存器UCxRXBUF被读取时,UCRXIFG会自动复位。因此,可利用接收中断服务程序完成数据的接收工作。
③ USCI中断向量UCxIV
       USCI中断标志具有不同的优先级,它们组合共用一个中断向量,即USCI为多源中断。中断向量寄存器UCxIV用来决定哪个中断标志请求产生中断。优先级最高的中断将会在UCxIV寄存器内产生一个数字偏移量,这个偏移量累加到程序计数器PC上,程序自动跳转到相应的软件程序处。禁止中断不会影响UCxIV的值。对UCxIV寄存器的任何读或写访问,都会复位挂起优先级最高的中断标志。如果另一个中断标志置位,在响应完之前的中断后,将会立即产生另一个中断。

USCI寄存器——SPI模式

       在SPI模式下可用的USCI寄存器如表所示。由于USCI_Ax寄存器和USCI_Bx寄存器类型和功能类似,在此只列出USCI_Ax寄存器并对其每位的含义进行讲解。若用户使用的为USCI_Bx模块,可参考USCI_Ax寄存器进行理解和配置。
在这里插入图片描述

USCI_x_SPI API (机翻)

       要将模块配置为主机模式,用户必须调用USCI_x_SPI_initMaster()来配置USCI_x_SPI 主机模式。接下来是使用USCI_x_SPI_enable()启用USCI_x_SPI模块。然后启用中断(如果需要)。建议在开启中断前先开启USCI_x_SPI模块。然后使用USCI_x_SPI_transmitData()初始化数据传输,然后当设置接收标志时,使用USCI_x_SPI_receiveData()读取接收到的数据,这表明RX/TX操作已经完成。
       要将模块配置为从机模式,可以使用USCI_x_SPI_initSlave()进行初始化
然后使用USCI_x_SPI_enable()启用模块。在此之后,中断可能
在需要时启用。当设置接收标志时,首先使用USCI_x_SPI_transmitData()传输数据,然后使用USCI_x_SPI_receiveData()接收数据。
       USCI_x_SPI API被分成3组函数:
处理状态和初始化的函数,
处理数据的函数,
以及管理中断的函数。

处理状态和初始化的函数

USCI_A_SPI_initMaster(uint16_t baseAddress, USCI_A_SPI_initMasterParam ∗param)
//初始化SPI主机模式
USCI_A_SPI_initSlave(uint16_t baseAddress, uint8_t msbFirst, uint8_t clockPhase, uint8_t clockPolarity)
//初始化SPI从机模式
USCI_A_SPI_disable(uint16_t baseAddress)
//禁用SPI模块
USCI_A_SPI_enable(uint16_t baseAddress)
//启用SPI模块
USCI_A_SPI_changeMasterClock(uint16_t baseAddress, USCI_A_SPI_changeMasterClockParam ∗param)
//初始化SPI主时钟。在这个函数调用的末尾,SPI模块被保留为启用状态
USCI_A_SPI_isBusy(uint16_t baseAddress)
//指示SPI总线是否繁忙
USCI_B_SPI_initMaster(uint16_t baseAddress, USCI_B_SPI_initMasterParam ∗param)
//初始化SPI主机模式
USCI_B_SPI_initSlave(uint16_t baseAddress, uint8_t msbFirst, uint8_t clockPhase, uint8_t clockPolarity)
//初始化SPI从机模式
USCI_B_SPI_disable(uint16_t baseAddress)
//禁用SPI模块
USCI_B_SPI_enable(uint16_t baseAddress)
//启用SPI模块
USCI_B_SPI_changeMasterClock(uint16_t baseAddress, USCI_B_SPI_changeMasterClockParam ∗param)
//初始化SPI主时钟。在这个函数调用的末尾,SPI模块被保留为启用状态
USCI_B_SPI_isBusy(uint16_t baseAddress)
//指示SPI总线是否繁忙

参数

baseAddress

USCI_A0_BASE
USCI_A1_BASE
USCI_B0_BASE
USCI_B1_BASE

USCI_A_SPI_initMasterParam

//*****************************************************************************
//
//! \brief Used in the USCI_A_SPI_initMaster() function as the param parameter.
//
//*****************************************************************************
typedef struct USCI_A_SPI_initMasterParam {//! Selects Clock source.//! \n Valid values are://! - \b USCI_A_SPI_CLOCKSOURCE_ACLK//! - \b USCI_A_SPI_CLOCKSOURCE_SMCLKuint8_t selectClockSource;//! Is the frequency of the selected clock sourceuint32_t clockSourceFrequency;//! Is the desired clock rate for SPI communicationuint32_t desiredSpiClock;//! Controls the direction of the receive and transmit shift register.//! \n Valid values are://! - \b USCI_A_SPI_MSB_FIRST//! - \b USCI_A_SPI_LSB_FIRST [Default]uint8_t msbFirst;//! Is clock phase select.//! \n Valid values are://! - \b USCI_A_SPI_PHASE_DATA_CHANGED_ONFIRST_CAPTURED_ON_NEXT [Default]//! - \b USCI_A_SPI_PHASE_DATA_CAPTURED_ONFIRST_CHANGED_ON_NEXTuint8_t clockPhase;//! \n Valid values are://! - \b USCI_A_SPI_CLOCKPOLARITY_INACTIVITY_HIGH//! - \b USCI_A_SPI_CLOCKPOLARITY_INACTIVITY_LOW [Default]uint8_t clockPolarity;
} USCI_A_SPI_initMasterParam;

USCI_B_SPI_initMasterParam

//*****************************************************************************
//
//! \brief Used in the USCI_B_SPI_initMaster() function as the param parameter.
//
//*****************************************************************************
typedef struct USCI_B_SPI_initMasterParam {//! Selects Clock source.//! \n Valid values are://! - \b USCI_B_SPI_CLOCKSOURCE_ACLK//! - \b USCI_B_SPI_CLOCKSOURCE_SMCLKuint8_t selectClockSource;//! Is the frequency of the selected clock sourceuint32_t clockSourceFrequency;//! Is the desired clock rate for SPI communicationuint32_t desiredSpiClock;//! Controls the direction of the receive and transmit shift register.//! \n Valid values are://! - \b USCI_B_SPI_MSB_FIRST//! - \b USCI_B_SPI_LSB_FIRST [Default]uint8_t msbFirst;//! Is clock phase select.//! \n Valid values are://! - \b USCI_B_SPI_PHASE_DATA_CHANGED_ONFIRST_CAPTURED_ON_NEXT [Default]//! - \b USCI_B_SPI_PHASE_DATA_CAPTURED_ONFIRST_CHANGED_ON_NEXTuint8_t clockPhase;//! \n Valid values are://! - \b USCI_B_SPI_CLOCKPOLARITY_INACTIVITY_HIGH//! - \b USCI_B_SPI_CLOCKPOLARITY_INACTIVITY_LOW [Default]uint8_t clockPolarity;
} USCI_B_SPI_initMasterParam;

msbFirst

//controls the direction of the receive and transmit shift register. Valid values are:
USCI_A_SPI_MSB_FIRST
USCI_A_SPI_LSB_FIRST //[Default]

clockPhase

//is clock phase select. Valid values are:
USCI_A_SPI_PHASE_DATA_CHANGED_ONFIRST_CAPTURED_ON_NEXT	//[Default]
USCI_A_SPI_PHASE_DATA_CAPTURED_ONFIRST_CHANGED_ON_NEXT

clockPolarity

//Valid values are:
USCI_A_SPI_CLOCKPOLARITY_INACTIVITY_HIGH
USCI_A_SPI_CLOCKPOLARITY_INACTIVITY_LOW [Default]

USCI_A_SPI_changeMasterClockParam

//*****************************************************************************
//
//! \brief Used in the USCI_A_SPI_changeMasterClock() function as the param
//! parameter.
//
//*****************************************************************************
typedef struct USCI_A_SPI_changeMasterClockParam {//! Is the frequency of the selected clock sourceuint32_t clockSourceFrequency;//! Is the desired clock rate for SPI communicationuint32_t desiredSpiClock;
} USCI_A_SPI_changeMasterClockParam;

USCI_B_SPI_changeMasterClockParam

//*****************************************************************************
//
//! \brief Used in the USCI_B_SPI_changeMasterClock() function as the param
//! parameter.
//
//*****************************************************************************
typedef struct USCI_B_SPI_changeMasterClockParam {//! Is the frequency of the selected clock sourceuint32_t clockSourceFrequency;//! Is the desired clock rate for SPI communicationuint32_t desiredSpiClock;
} USCI_B_SPI_changeMasterClockParam;

处理数据的函数

USCI_A_SPI_transmitData(uint16_t baseAddress, uint8_t transmitData)
//从SPI模块传输一个字节
USCI_A_SPI_receiveData(uint16_t baseAddress)
//接收已发送到SPI模块的字节
USCI_B_SPI_transmitData(uint16_t baseAddress, uint8_t transmitData)
//从SPI模块传输一个字节
USCI_B_SPI_receiveData(uint16_t baseAddress)
//接收已发送到SPI模块的字节

参数

baseAddress

USCI_A0_BASE
USCI_A1_BASE
USCI_B0_BASE
USCI_B1_BASE

transmitData
从SPI模块传输的数据

管理中断的函数

USCI_A_SPI_disableInterrupt(uint16_t baseAddress, uint8_t mask)
//禁用单个SPI中断源
USCI_A_SPI_enableInterrupt(uint16_t baseAddress, uint8_t mask)
//启用单个SPl中断源
USCI_A_SPI_getInterruptStatus(uint16_t baseAddress, uint8_t mask)
//获取当前SPI中断状态
USCI_A_SPI_clearInterrupt(uint16_t baseAddress, uint8_t mask)
//清除选择的SPl中断状态标志
USCI_B_SPI_disableInterrupt(uint16_t baseAddress, uint8_t mask)
//禁用单个SPI中断源
USCI_B_SPI_enableInterrupt(uint16_t baseAddress, uint8_t mask)
//启用单个SPl中断源
USCI_B_SPI_getInterruptStatus(uint16_t baseAddress, uint8_t mask)
//获取当前SPI中断状态
USCI_B_SPI_clearInterrupt(uint16_t baseAddress, uint8_t mask)
//清除选择的SPl中断状态标志

参数

baseAddress

USCI_A0_BASE
USCI_A1_BASE
USCI_B0_BASE
USCI_B1_BASE

USCI_A_SPI 的 mask

/*is the bit mask of the interrupt sources to be disabled. Mask value is the logical
OR of any of the following:*/
USCI_A_SPI_TRANSMIT_INTERRUPT
USCI_A_SPI_RECEIVE_INTERRUPT

USCI_B_SPI 的 mask

/*is the bit mask of the interrupt sources to be disabled. Mask value is the logical
OR of any of the following:*/
USCI_B_SPI_TRANSMIT_INTERRUPT
USCI_B_SPI_RECEIVE_INTERRUPT

DMA相关

USCI_A_SPI_getReceiveBufferAddressForDMA(uint16_t baseAddress)
//返回DMA模块的SPI的RX缓冲区的地址
USCI_A_SPI_getTransmitBufferAddressForDMA(uint16_t baseAddress)
//返回DMA模块的SPI的TX缓冲区的地址
USCI_B_SPI_getReceiveBufferAddressForDMA(uint16_t baseAddress)
//返回DMA模块的SPI的RX缓冲区的地址
USCI_B_SPI_getTransmitBufferAddressForDMA(uint16_t baseAddress)
//返回DMA模块的SPI的TX缓冲区的地址

参数

baseAddress

USCI_A0_BASE
USCI_A1_BASE
USCI_B0_BASE
USCI_B1_BASE

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

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

相关文章

轻松上手Fluentd,结合 Rainbond 插件市场,日志收集更快捷

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

深入理解Threadlocal

SUN公司早在JDK1.2的时候就为我们提供了java.lang.ThreadLocal,低版本的JDK所提供的get()返回的是Object对象,需要强制类型转换,使用起来不方便,而在JDK1.5引入了泛型,在一定程度地简化ThreadLocal的使用。 我们知道在spring容器中…

HDU 2289 几何+圆台

题意;给定一个圆台杯子的R&#xff0c;r&#xff0c;H和里面水的体积V 求h 二分。。。。。。。。。。。。。。。。。 因为解不出来h。。。。。。。。。。。。 View Code 1 /*2 几何3 圆台体积4 V1/3*pi*h*(r1*r1r2*r2r1*r2)5 6 */7 #include<stdio.h>8 #include<stri…

MSP430F5529 DriverLib 库函数学习笔记(十)SPI驱动墨水屏

目录上机实战SPI 驱动 墨水屏墨水屏介绍电子纸的分类电泳型电子纸技术详解原理结构优势与不足实验电路介绍程序分析引脚初始化SPI模块初始化发送和接收全部源代码main.cmain.h墨水屏相关Paper_Display.cPaper_Display.hInclude.h实验结果现象波形对应平台&#xff1a;Code Comp…

Xamarin开发IOS笔记:切换输入法时输入框被遮住

在进行IOS开发的过程中&#xff0c;出现类似微信朋友圈的交互界面&#xff0c;当用户遇到感兴趣的内容可以进行评论。为了方便评论输入&#xff0c;当出现评论输入框的时候自动将评论输入框移动至键盘的上方&#xff0c;这样方便边输入边查看。 当用户隐藏键盘或者切换输入法的…

技术管理进阶——你了解成长的全貌吗?

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

MSP430F5529 DriverLib 库函数学习笔记(十一)I2C / IIC

目录硬知识USCI的I2C模式I2C概述MSP430单片机I2C模块特征及结构框图I2C原理I2C主从操作&#xff08;1&#xff09;从模式&#xff08;2&#xff09;主模式I2C模式下的USCI中断USCI寄存器—I2C模式I2C API (机翻)API介绍主机模式主机模式单字节传输主机模式多字节传输主机模式单…

使用 Abp.Zero 搭建第三方登录模块(一):原理篇

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

MSP430F5529 DriverLib 库函数学习笔记(十二)I2C实战

目录上机实战I2C给 DAC 芯片 DAC7571 写入数字量DAC7571 介绍程序分析引脚复用I2C 初始化发送一个字节发送一个字读取一个字节读取多个字节中断服务函数整体代码main.cMSP430F5529_I2C.cMSP430F5529_I2C.h实验结果I2C 读取 TMP421 温度TMP421 简介程序摘要TMP421初始化温度的读…

mysqldump造成Buffer Pool污染的研究 [转]

原文链接&#xff1a;http://www.shaoqun.com/m/a/43307.aspx 前言&#xff1a; 最近Oracle MySQL在其官方Blog上贴出了 5.6中一些变量默认值的修改。其中innodb_old_blocks_time 的默认值从0替换成了1000&#xff08;即1s&#xff09; 关于该参数的作用摘录如下&#xff1a; h…

自动加载缓存框架

2019独角兽企业重金招聘Python工程师标准>>> 自动加载缓存框架 代码&#xff0c;请访问github 获取更详情&#xff0c;更新的内容 QQ交流群:429274886&#xff0c;版本更新会在群里通知&#xff0c;能了解最新动态 0.5版本已经是稳定版本了&#xff0c;大家可以放心…

(数据科学学习手札139)geopandas 0.11版本重要新特性一览

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

MSP430F5529 DriverLib 库函数学习笔记(十三)认识低功耗模式

目录硬知识低功耗模式MSP430单片机各工作模式下的电流消耗API进入低功耗模式退出低功耗模式平台&#xff1a;Code Composer Studio 10.3.1 MSP430F5529 LaunchPad™ Development Kit (MSP‑EXP430F5529LP) 硬知识 低功耗模式 MSP430单片机具有7种低功耗模式&#xff08;LPM0…

剖析虚幻渲染体系(16)- 图形驱动的秘密

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

Python NLPIR(中科院汉语分词系统)的使用 十五分钟快速入门与完全掌握

前叙 博主写这篇文章使用了八十分钟,阅读需要十五分钟,读完之后你将会学会在Python中使用NLPIR2016.如果你花费更多的时间练习后半部分的例子,你将能够在一天内学会在Python中使用NLPIR2016的全部所需知识 如果你想要获取更详细的API翻译,你需要进一步学习ctypes,附赠一篇关于…

微信朋友圈也可以发语音你们造吗?

在微信朋友圈发照片太矫情&#xff0c;小视频又耗流量&#xff0c;只发文字又太单调&#xff0c;何不发段语音来呼朋唤友呢&#xff1f;你是说朋友圈发语音&#xff1f;这是真的吗&#xff1f;sure&#xff0c;开发者已经利用微信JS-SDK接口实现了&#xff0c;扫描下方的二维码…

MSP430F5529 DriverLib 库函数学习笔记(十四)看门狗定时器 (WDT)

目录硬知识看门狗定时计数器 &#xff08;WDTCNT&#xff09;看门狗模式定时计数模式看门狗定时器中断时钟故障保护功能低功耗模式下的看门狗操作看门狗定时器控制寄存器WDT_A API (机翻)参数上机实战定时计数模式配置中断服务函数整体代码实验结果看门狗模式配置整体代码平台&…

初学 Unsupervised feature learning and deep learning--Sparse autoencoder

今天做了一下 Stanford CS294A 的一个 programming assignment: sparse autoencoder 因为之前做过 Andrew Ng 的 ml online class 的 neural network 那节的作业&#xff0c;所以这个实现起来就很 easy 了。直接贴代码&#xff08;all vectorized&#xff09;&#xff1a;1 [d …

【Nginx】Windows平台下配置Nginx服务实现负载均衡

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

PLC基础入门

PLC编程入门基础技术知识学习 2016-06-27 xjp7879 摘自 电工技术知...第一章 可编程控制器简介 可编程序控制器&#xff0c;英文称Programmable Controller&#xff0c;简称PC。但由于PC容易和个人计算机&#xff08;Personal Computer&#xff09;混淆&#xff0c;故人们仍习…