当前位置: 首页 > news >正文

吉安做网站的英文网站 字体大小

吉安做网站的,英文网站 字体大小,linux 做网站,事业圈app哪家公司开发的一、项目简介 采用STM32f103C8t6单片机#xff0c;使用HAL库编写。项目中针对初学者驱动WS2812时会遇到的一些问题#xff0c;给出了解决方案。 二、ws2812驱动原理 WS2812采用单线归零码的通讯方式#xff0c;即利用高低电平的持续时间来确定0和1。这种通信方式优点是只需…一、项目简介 采用STM32f103C8t6单片机使用HAL库编写。项目中针对初学者驱动WS2812时会遇到的一些问题给出了解决方案。 二、ws2812驱动原理 WS2812采用单线归零码的通讯方式即利用高低电平的持续时间来确定0和1。这种通信方式优点是只需要一根通信线缺点是对通信的时序要求较高。 以官方数据手册的时序图为例通信速率为800kbit/s也就是PWM波的速率为800Kbit/s每个PWM的周期为1.25微妙。PWM的一个周期即为一个数据帧每个数据帧由一段高电平和一段低电平组成。下图为官方规定的数据传输时间 T0H0码高电平时间0.22 us~0.35 usT0L0码低电平时间0.58 us~1.0 usT1H1码高电平时间0.58 us~1.0 usT1L1码低电平时间0.22 us~0.42 usRES帧间隔低电平时间50us以上 也就是说一个1码由2/3左右的高电平 和 1/3左右的低电平组成。 一个0码由1/3左右的高电平 和 2/3左右的低电平组成。 若定时器的时钟频率为72MHz那么预分频值设置为0比较值设置为89,这样产生的PWM波的频率就为800KHz周期为1.25us。要发送1码时设置占空比为60。要发送0码时设置占空比为29。 每个WS2812需要用24bit的数据来控制当n个ws2812进行级联的时候第一个灯会将第一个24bit的数据拦截将后面的数据进行转发。第二个灯又会拦截第二个24bit的数据将后面的数据进行转发。后面的逻辑也是一样数据每经过一个灯数据的前24bit就会被拦截下来作为这个灯的显示内容。数据传输方法如下图所示 代码编写逻辑初始化的时候需生成一个显存数组由DMA将数组中的内容实时搬运到定时器的比较寄存器中DMA要开启循环模式。之后我们只需要更新显存数组中的数据WS2812的显示内容就会被实时更新。 三、Cube MX 生成底层代码 1、配置Debug的模式 2、配置外部晶振 3、配置时钟 4、配置定时器 5、配置定时器的DMA 6、生成代码 四、代码编写 1、下面ws2812.c的代码 #include ws2812.h//显存数组长度为 灯的数量*24复位周期 uint16_t WS2812_RGB_Buff[LED_NUM*DATA_LENWS2812_RST_NUM] {0}; /*** 函数WS2812单灯设置函数* 参数num:灯的位置R、G、B分别为三个颜色通道的亮度最大值为255* 作用单独设置每一个WS2812的颜色 ***/ void WS2812_Set(uint16_t num,uint8_t R,uint8_t G,uint8_t B) {uint32_t indexx(num*(3*8));for (uint8_t i 0;i 8;i){//填充数组WS2812_RGB_Buff[indexxi] (G i) (0x80)?WS_H:WS_L;WS2812_RGB_Buff[indexxi 8] (R i) (0x80)?WS_H:WS_L;WS2812_RGB_Buff[indexxi 16] (B i) (0x80)?WS_H:WS_L;} }//WS2812初始化函数 void WS2812_Init() {//设置关闭所有灯for(int i0;i8;i){WS2812_Set(i,0,20,0);}//作用调用DMA将显存中的内容实时搬运至定时器的比较寄存器HAL_TIM_PWM_Start_DMA(htim2,TIM_CHANNEL_1,(uint32_t *)WS2812_RGB_Buff,sizeof(WS2812_RGB_Buff)/sizeof(uint16_t)); }2、下面为ws2812.h的代码 #include main.h #include tim.h#define WS_H 60 // 1 码相对计数值 #define WS_L 29 // 0 码相对计数值 #define WS_REST 40 // 复位信号脉冲数量 #define LED_NUM 8 // WS2812灯个数 #define DATA_LEN 24 // WS2812数据长度单个需要24个字节 #define WS2812_RST_NUM 50 // 官方复位时间为50us40个周期保险起见使用50个周期void WS2812_Init(void); void WS2812_Set(uint16_t num,uint8_t R,uint8_t G,uint8_t B); 3.下面为main.c中调用的代码效果为流水灯   /*** brief The application entry point.* retval int*/ int main(void) {/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_DMA_Init();MX_TIM2_Init();/* USER CODE BEGIN 2 */WS2812_Init();/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){//效果一流水灯for(int i0;i8;i){HAL_Delay(100);WS2812_Set(i,2*(i1),4*(i1),10*(i1));}HAL_Delay(300);for(int i0;i8;i){WS2812_Set(i,0,0,0);}HAL_Delay(100);//效果二跑马灯 // for(int i0;i8;i) // { // HAL_Delay(100); // WS2812_Set(i,0,20,0); // if(i0) WS2812_Set(7,0,0,0); // else WS2812_Set(i-1,0,0,0); // }/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */ } 五、烧录效果 六、注意事项 1、DMA的搬运方向为 内存(Memory) 到 外设(Peripheral) 2、DMA的模式为循环模式 3、DMA设置内存地址自增 七、其他问题请留言
http://www.w-s-a.com/news/915705/

相关文章:

  • 外贸网站服务商wordpress主题handsome
  • 云主机多个网站如何优化网站图片
  • 松江移动网站建设成都app开发制作公司
  • 锦州做网站的公司百度seo搜索营销新视角
  • 做画册找什么网站海南建设工程股份有限公司网站
  • 网站机房建设有助于网站备案
  • 北辰苏州网站建设抖音代运营投诉平台
  • 安徽住房与城乡建设部网站如何新建站点
  • 企业网站开发的感想网站开发公司所需投入资源
  • 如何拿网站后台账号wordpress 电影下载站源码
  • 公司网站建设方案书安卓应用市场免费下载安装
  • phpmysql网站设计建设好一个网站需要
  • 自己做的网站能被别人看到吗idea怎么做网页
  • 燕莎网站建设互联网排名前十的公司2021
  • 微软云怎么做网站微商城和小程序区别
  • 哈尔滨建站的系统网站到首页排名
  • 运动网站开发的需求分析南通市住房和城乡建设局网站
  • 佘山做网站谷歌云做网站
  • 免费发布信息网站大全666做p2p网站费用
  • 北京 网站建设咨询顾问公司网络公司有几家
  • 设计类网站如何用ps做网站首页
  • 品牌网站建设的关键事项设计网有哪些
  • 网站没收录徐州建设工程审图中心网站
  • 网站建设记账做什么科目erp系统有哪些软件
  • 泰拳图片做网站用哪里有做空包网站的
  • 查外链网站重庆做网站微信的公司
  • 有没有外包活的网站如何做网站快捷键的元素
  • 公司网站赏析网站制作2019趋势
  • 企业进行网站建设的方式有( )推广引流违法吗
  • 按营销型网站要求重做网站 费用点金网站建设