STM32之七:SPI通信 SPI(Serial Peripheral Interface)通信是一个全双工、同步,可以一主多从的一种串行通信协议,该通信模式需要4根线,分别是MISO\MOSI\CLK\CS,广泛用于微控制器与各种外围设备(如传感器、存储器、显示器等)之间的数据交换。
STM32编写代码之嵌入式常用位操作 现在再看程序1的第三行,a = b & (0x80 >> i));不难理解这句代码的意思是b依次和 (0x80 >> i)) 进行&的位操作,如果b的第 i 位为1,则&出的结果第i位保持1;可以看到,对于一个字节来说,0x80 >> i [ i 取值0-7] 即为依次将该字节的第7位、第6位、第5位、第4位、……表示 c = (c|=(0x80 >> i)),| 操作特性是有1即1,全0才0。但是一般在使用的过程中通常会在前面加一个if语句,即如果接收到1,才会执行该操作,目的是将相应位 置1。
STM32之六:SysTick系统滴答定时器 SysTick——系统定时器,是属于CM3内核的一个外设,内嵌在NVIC中。SysTick是一个24位的向下递减的计数器,从重装载寄存器的值递减到0,之后自动从RELOAD寄存器中重装载定时器初值。只要不使能systick定时器,它就永不停息的一直循环计数,在睡眠模式下也能使用。systick系统滴答定时器在没有操作系统时,用于延时;在有操作系统时候(RTOS、UCOS2)通常为操作系统提供精准的定时中断(1ms~50ms)。
STM32之四:TIM定时器(1-基本定时器) 而在图152中,ARPE=1,在计数器还未达到0x36时,将ARR的修改为0x36,但是在计数器=0x36时却为产生更新,在计数器达到上次ARR的值0xF5产生更新事件之后,ARR的值(影子寄存器)才更新为0x36。“如果APB1预分频系数=1,则频率不变,否则频率*2”,我们知道,由于APB1最大频率为36MHz,SYSCLK时钟为72MHz,所以,APB1预分频器的系数=2,因此此处频率*2,即,至TIMxCLK的时钟为72MHz。即关闭影子寄存器,预装载寄存器的内容直接传送到影子寄存器。
STM32之三:中断&&外部中断 中断是计算机的一种机制,描述了这样一种场景:CPU暂停当前正在处理的程序,转而去处理紧急的事情,这种场景就叫中断。中断其实很好理解,因为这样的场景经常发生在我们日常生活中。比如小李正在写作业,但是电话铃声响了,他转而去接电话,接完电话回来后继续写作业。在这个情境中,小李就完成了一次中断,下图根据现实生活的中断场景形象的表示了CPU中断过程,便于理解。图1 中断概念。
STM32学习之一:什么是STM32 stm32 是ST公司基于ARM Cortex-M内核开发的32位微控制器,它是一个微控制器产品系列的总称。观看stm32的技术参考手册可以发现,stm32有很多子系列:stm32小容量产品,stm32中容量产品、stm32大容量产品和STM32互联型产品;按照功能上划分,又可分为STM32F101xxx,STM32F102xxx,STM32F103xxx系列。
STM32之二:时钟树 AHB输出到APB1总线和APB2总线,其中APB1总线最大时钟频率为36MHz,为低速时钟,片上挂载低速外设,例如看门狗定时器,USART2\3\4\5,SPI2\3等。但是时钟源的时钟频率最高也就16MHz,达不到STM32系统时钟72MHz的要求,因此需要倍频器将外部时钟频率进行倍频,在输入给系统时钟。预分频器,可通过配置分频系数,调整输出时钟的频率。PLL锁相环是一种控制系统,之所以叫PLL时钟,是因为,PLL通过调整输入信号(HSE、HSI)的频率和相位,以满足系统对不同频率的要求。
linux 下安装chrome 和 go GOPATH 是存放 Go 项目的目录;GOROOT 是 Go 的安装包所在目录。1.1 首先下载google-chrome.deb安装包。将文件解压到 /usr/local 目录下。1.3 解决Chrome无法启动问题。1.2 安装所要安装的软件。之后 安装 gdebi包。
当pycharm训练完毕之后未释放cuda hyh@hyh:~$ whereis fuserfuser: /bin/fuser /usr/share/man/man1/fuser.1.gzhyh@hyh:~$ /bin/fuser -k /dev/nvidia*/dev/nvidia0: 1889m 2092m 2423m 2464m 5584m 5677m 11028m/dev/nvidiactl: 1889m 2092m 2423m 2464m 5584 5677 11028m/dev/.
ubuntu16.04 卸载安装cudn cudnn pytorch 一、base环境下安装cudn和cudnn1.卸载旧cuda9.0(不需要则跳过)sudo /usr/local/cuda-9.0/bin/uninstall_cuda_9.0.pl卸载之后,会发现/usr/local/cuda-9.0目录下仍然有文件存在,仍然删除即可sudo rm -rf /usr/local/cuda-9.02.安装新cuda10.1找自己对应版本下载 https://developer.nvidia.com/cuda-toolkit-archive2