//源文件voidTimerPhyConfig(){RCC->APB1ENR|=(1ARR=arr; TIM3->PSC=psc; TIM3->DIER=(1CR1|=(1CR1&=~(1SR&0X0001)//溢出中断 { LD1_TURN; LD2_TURN; LD3_TURN; } TIM3->SR&=~(1
//源文件voidLedPhyConfig(){RCC->AHB1ENR|=(1MODER|=(1OTYPER&=~(1OSPEEDR|=(1MODER|=(1OTYPER&=~(1OSPEEDR|=(1MODER|=(1OTYPER&=~(1OSPEEDR|=(1ODR|=(1ODR&=~(1IDR&(1ODR|=(1ODR&=~(1IDR&(1ODR|=(1ODR&=~(1IDR&(1
目录AIR32F103(一)合宙AIR32F103CBT6开发板上手报告AIR32F103(二)Linux环境和LibOpenCM3项目模板AIR32F103(三)Linux环境基于标准外设库的项目模板AIR32F103(四)27倍频216MHz,CoreMark跑分测试AIR32F103(五)FreeRTOSv202112核心库的集成和示例代码关于先贴一下已经集成好的项目地址,如果对如何集成不感兴趣,想直接使用的,可以跳过这部分,直接看使用部分GitHubhttps://github.com/IOsetting/air32f103-template/tree/master/Examples/
//源文件voidTimerPhyConfig(){RCC->APB1ENR|=(1ARR=arr; TIM3->PSC=psc; TIM3->DIER=(1CR1|=(1CR1&=~(1SR&0X0001)//溢出中断 { LD1_TURN; LD2_TURN; LD3_TURN; } TIM3->SR&=~(1
//源文件voidLedPhyConfig(){RCC->AHB1ENR|=(1MODER|=(1OTYPER&=~(1OSPEEDR|=(1MODER|=(1OTYPER&=~(1OSPEEDR|=(1MODER|=(1OTYPER&=~(1OSPEEDR|=(1ODR|=(1ODR&=~(1IDR&(1ODR|=(1ODR&=~(1IDR&(1ODR|=(1ODR&=~(1IDR&(1
目录AIR32F103(一)合宙AIR32F103CBT6开发板上手报告AIR32F103(二)Linux环境和LibOpenCM3项目模板AIR32F103(三)Linux环境基于标准外设库的项目模板AIR32F103(四)27倍频216MHz,CoreMark跑分测试AIR32F103(五)FreeRTOSv202112核心库的集成和示例代码关于先贴一下已经集成好的项目地址,如果对如何集成不感兴趣,想直接使用的,可以跳过这部分,直接看使用部分GitHubhttps://github.com/IOsetting/air32f103-template/tree/master/Examples/
PS2采用SPI通信协议源码和参考文件获取:https://github.com/Sound-Sleep/PS2_Based_On_STM32接收器接口DI:手柄->主机,时钟的下降沿传送信号,信号的读取在时钟由髙到低的变化过程中完成DO:主机->手柄,同步传送于时钟的下降沿空端口GNDVDD:3~5VCS:低电平被选中CLK空端口ACK:一般不用时钟频率250Khz~4us数据不稳定可以适当增加频率通信流程拉低CS线电平,并发出一个命令“0x01”手柄会回复它的ID“0x41=绿灯模式,0x73=红灯模式”手柄发送ID的同时,单片机将传送0x42,请求数据手柄发送出0x5A,告诉单片机“数据
PS2采用SPI通信协议源码和参考文件获取:https://github.com/Sound-Sleep/PS2_Based_On_STM32接收器接口DI:手柄->主机,时钟的下降沿传送信号,信号的读取在时钟由髙到低的变化过程中完成DO:主机->手柄,同步传送于时钟的下降沿空端口GNDVDD:3~5VCS:低电平被选中CLK空端口ACK:一般不用时钟频率250Khz~4us数据不稳定可以适当增加频率通信流程拉低CS线电平,并发出一个命令“0x01”手柄会回复它的ID“0x41=绿灯模式,0x73=红灯模式”手柄发送ID的同时,单片机将传送0x42,请求数据手柄发送出0x5A,告诉单片机“数据
阅读某项目时,遇到了以下两个神奇的宏用法IFDEF(CONFIG_DEVICE,init_device());MUXDEF(CONFIG_TRACE,"ON","OFF")顾名思义,第一个的意思就是如果定义了CONFIG_DEVICE宏才执行后面的函数调用,第二个的含义则是如果定义了CONFIG_TRACE宏则为"ON",否则为"OFF"。大家可以思考思考,这样的宏你们会怎么实现呢?Hint:并不简单哦,会用到不少宏定义的技巧。(如果你有简单的方法请一定留言告诉我!)点击查看解答//macroconcatenation#defineconcat_temp(x,y)x##y#defineconc
阅读某项目时,遇到了以下两个神奇的宏用法IFDEF(CONFIG_DEVICE,init_device());MUXDEF(CONFIG_TRACE,"ON","OFF")顾名思义,第一个的意思就是如果定义了CONFIG_DEVICE宏才执行后面的函数调用,第二个的含义则是如果定义了CONFIG_TRACE宏则为"ON",否则为"OFF"。大家可以思考思考,这样的宏你们会怎么实现呢?Hint:并不简单哦,会用到不少宏定义的技巧。(如果你有简单的方法请一定留言告诉我!)点击查看解答//macroconcatenation#defineconcat_temp(x,y)x##y#defineconc