推荐阅读最新更新时间:2024-03-16 16:16
STM32 485 调试
1、最近由于项目的需要,搞了下485通信。首先是单片机如何控制485收发数据。发数据就是通过串口发送数据(说白了就是串口发送),但是要注意的是485的控制引脚要拉高设置为发送模式: //通过485发送数据 void RS485_Send_Data(u8 *buf,u8 len) { u8 t; RS485_TX_EN=1; //设置控制引脚,来设置成发送模式 for(t=0;t len;t++) { while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET); USART_SendData(USART2,buf ); } while(USART_GetFlagSt
[单片机]
基于STM32的解魔方机器人设计方案
方案设计
采用舵机作为魔方的驱动电机,从舵机的驱动原理可知:舵机运行的速度和的主频没有关系,所以采用和采用更高主频的相比在控制效果上没有什么差别。过程简单,非常容易上手,而且不需要进行的移植,非常适合对魔方机器人的舵机进行控制。 2.复原时间是魔方机器人的一个非常重要,可以说是最为重要的一个参数,本文的软件设计中涉及到了大量的,如 Kocemba 复原算法和 KNN 分类算法等,而控制器主频对于算法运行时间的长短起着决定性的作用。 所以在本文的方案设计中,我们把核心算法全部交给 Allwinner A20 运行的 APP。
设计原理
1、Kociemba算法
Kociemba算法,又称为二阶段
[机器人]
STM32总结之开启外设时钟
我们知道到,STM32的大多数外设,在使用前都要开启该外设的时钟。 下面我们以STM32VET6指南者为例 1.点亮LED灯实验时,用到了GPIOB,我们需要开启GPIOB的时钟: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO,ENABLE);//开启GPIOB的时钟N 2.使用按键的时候,不论是查询方式,还是中断方式,都用到了GPIOA,所以要开启GPIOA的时钟。 但是按键查询方式和中断方式有点不一样。 按键查询方式时,GPIO以如下方式开启时钟: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//
[单片机]
【菜鸟入门】stm32 之 pwm
这个pwm几天前就搞出来了,但是觉得不是很难,就没有写 今天jlink固件坏了,修了半天没有修好,现在就先扔着吧,先借大黄的用用,下面闲着木事,就把pwm写下吧 好吧,开始今天的pwm 还是老话,先附上一段代码:(由于stm的pwm有多个,每个又有多个通道,我们今天选TIM2_CH1来产生) /* * TIM2_CH1 */ int pwm_init(u16 arr,u16 psc) { RCC- APB1ENR = 1 0; //enable timer2 RCC- APB2ENR = 1 2; //enable GPIOA GPIOA- CRL &= ~(0xF 0); //Clear
[单片机]
STM32系列第20篇--DAC
特点: 2个DAC转换器:每个转换器对应1个输出通道 (对应PA4和PA5) 8位或者12位单调输出 12位模式下数据左对齐或者右对齐 同步更新功能 噪声波形生成 三角波形生成 双DAC通道同时或者分别转换 每个通道都有DMA功能 DAC输出电压: 数字输入经过DAC被线性地转换为模拟电压输出,其范围为0到Vref+。任一DAC通道引脚上的输出电压满足下面的关系: DAC输出 = Vref * (DOR / 4095)。 CODE: //dac.c#include dac.h void Dac1_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; DA
[单片机]
简单初始化STM32的RTC
RTC嘛 就跟DS1302 差不多吧...当然了可分频又有32位的计数器...报警、秒、溢出中断.....等等。RTC在APB1总线上.... 要使用 RTC,一般来说也顺带地使用上后备寄存器 这是因为RTC 是一个简单的秒中断 定时器,年月日时分秒的信息必须要找个地方能掉电保存才有意义.STM32 的备份寄存器(BKP)是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。他们处在备份域里,当VDD电源被切断,他们仍然由VBAT维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。 此外,BKP控制寄存器用来管理侵入检测和RTC校准功能。 复位后,对备份寄存器和RTC的访问被禁止,并且备份域被
[单片机]
STM32定时器初始化就进中断问题
在用到STM32定时器的更新中断时,发现有些情形下只要开启定时器就立即进入一次中断。准确说,只要使能更新中断允许位就立即响应一次更新中断【当然前提是相关NVIC也已经配置好】。换言之,只要使能了相关定时器更新中断,不管你定时间隔多长甚至不在乎你是否启动了相关定时器,它都会立即进入一次定时器更新中断服务程序。 以STM32F051芯片为例,做了几种不同顺序的组合测试。根据测试发现,的确有些情况下一运行TIM_ITConfig(TIM1, TIM_IT_Update, ENABLE); 【即使能更新中断】就立即进入更新中断服务程序。当然后面的中断都是正常的。 老实说,这个问题比较容易忽视,有些情况下也无关紧要,但有些情况可能会给应
[单片机]
基于STM32的步进电机速度控制
项目需求 在制作一个使用全向轮的机器人底盘,对于全向轮,电机的精度是影响效果的重要因素。所以使用了步进电机,使用步进电机的优点是可以不使用编码器,开环控制即可达到高精度的效果。 调整占空比或者调整周期 众所周知,PWM有两个重要参数,周期与占空比。 步进电机的运动方式是,每收到一个脉冲,就旋转指定的角度。因此影响电机速度的唯一参数就是PWM的频率。以下附图两张来说明调整占空比与调整周期的区别。 周期固定,调整占空比 上图中有4个PWM,它们的周期是一样的,不同之处是拥有从80%至20%的占空比。可以看出,无论占空比为多少,在1s内,它们产生的高电平的数量是一样的,即无论占空比为多少,PWM的频率都一致。因此也就无法调整步进
[单片机]