//源文件voidUartGpioConfig(){ RCC->AHB1ENR|=(1APB1ENR|=(1APB2ENR|= //PD8TXDGPIOD->MODER|=(2OSPEEDR|=(2AFR[1]|=(7PUPDR|=(1MODER|=(2OSPEEDR|=(2AFR[0]|=(7PUPDR|=(1BRR|=(54*1000000+bound/2)/bound; USART3->CR1=0; USART3->CR1|=0CR1|=0CR1|=0CR1|=1CR1|=1TDR=byte; while((USART3->ISR&(1
//源文件voidTimerPhyConfig(){RCC->APB1ENR|=(1ARR=arr; TIM3->PSC=psc; TIM3->DIER=(1CR1|=(1CR1&=~(1SR&0X0001)//溢出中断 { LD1_TURN; LD2_TURN; LD3_TURN; } TIM3->SR&=~(1
//源文件voidRccPhyConfig(){ uint16_tretry=0; RCC->APB1ENR|=1CR1|=3CR1|=1CR1|=1CR|=(1CR&(1CR&=~(1CFGR|=(0PLLCFGR=PLL_M|(PLL_N>1)-1)CR|=(1CR&(1ACR|=1ACR|=1ACR|=7CFGR&=~(3CFGR|=2CFGR&(3
//源文件staticuint32_tfac_us=0;//us延时倍乘数/***@brief初始化延迟函数* 当使用ucos的时候,此函数会初始化ucos的时钟节拍* SYSTICK的时钟固定为AHB时钟的1/8*@paramSYSCLK系统时钟频率*/voidDelayPhyConfig(){ HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);//SysTick频率为HCLK fac_us=216; //不论是否使用OS,fac_us都需要使用}/***@brief延时nus**@paramnus要延时的us数.值不
//源文件voidLedPhyConfig(){RCC->AHB1ENR|=(1MODER|=(1OTYPER&=~(1OSPEEDR|=(1MODER|=(1OTYPER&=~(1OSPEEDR|=(1MODER|=(1OTYPER&=~(1OSPEEDR|=(1ODR|=(1ODR&=~(1IDR&(1ODR|=(1ODR&=~(1IDR&(1ODR|=(1ODR&=~(1IDR&(1
学习操作系统原理最好的方法是自己写一个简单的操作系统。一、外设和I/O接口前面我们介绍过冯·诺依曼结构包含5部分,其中输入设备和输出设备统称为外部设备,简称外设。常见的外设有鼠标、键盘、显示器、硬盘等。由于外设种类多、差异大、速度慢等原因,导致CPU无法直接与外设沟通。于是在CPU和外设之间产生了“中间人”,这个“中间人”就是I/O接口。如下图:CPU与外设的信息交流都是通过I/O接口来间接实现的。比如我们前面向屏幕输出字符,并不是CPU直接将数据传递给屏幕,而是先传递给显卡,显卡再去操控屏幕。显卡就是一种I/O接口。后面我们将要学习如何读写硬盘,同样CPU无法直接读写硬盘,而是通过“中间人”
学习操作系统原理最好的方法是自己写一个简单的操作系统。一、外设和I/O接口前面我们介绍过冯·诺依曼结构包含5部分,其中输入设备和输出设备统称为外部设备,简称外设。常见的外设有鼠标、键盘、显示器、硬盘等。由于外设种类多、差异大、速度慢等原因,导致CPU无法直接与外设沟通。于是在CPU和外设之间产生了“中间人”,这个“中间人”就是I/O接口。如下图:CPU与外设的信息交流都是通过I/O接口来间接实现的。比如我们前面向屏幕输出字符,并不是CPU直接将数据传递给屏幕,而是先传递给显卡,显卡再去操控屏幕。显卡就是一种I/O接口。后面我们将要学习如何读写硬盘,同样CPU无法直接读写硬盘,而是通过“中间人”