推荐阅读最新更新时间:2024-11-09 17:13
stm32 的PA13,PA14, PA15做普通IO口的问题
这两天在玩oled屏,想用几个按键控制舵机,oled显示,于是把三个按键接到了PA13,14,15上发现没有任何反应后来一查手册发现有问题 可以看到PA13口的Main function是JTMS-SWDIO,不是PA13,所以要想使用PA13的普通IO口能力,就要先把IO口的复用功能打开,再把JTMS-SWDIO功能关掉就可以。 做输入,输出口都可以 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); 再后来又发现了一个问题:就是单步调试的时候不能调试,
[单片机]
51单片机与PC上位机串口通信之LED控制
PC机通过上层软件控制单片机LED的亮灭或者控制LED的闪烁及闪烁时间,上层软件用户名密码均为admin 注意PROTEUS串口仿真需要配合虚拟串口软件才能工作 上位机(包含源码)软件说明: 发送数据解析 字节1、2:0x55 0xaa 数据是否正确判断标志 字节3: 0x01 ------单个LED控制手动控制 0x02 ------单个LED控制自动闪烁 字节4 此字节从低位到高位依次控制LED0-LED7,例如0x01表示手动点亮LED0或者LED0自动闪烁;0x28表示手动点 亮LED3、LED5或者LED3、LED5自动闪烁 字节5、6:表示闪烁时间(6高8位 5低8位)
[单片机]
STM32项目(二) —— 车灯测试台架
需求: (1)、点灯控制器:在线节拍,离线节拍; (2)、PWM控制盒:在线PWM,离线PWM; (3)、电流测试模块:检测车灯电流校准系数; 方案: 点灯控制器:STM32 + CAN + GPIO 节拍:比如亮多长时间,灭多长时间;大节拍中嵌套多个小节拍,每个灯对应相同或者不同的节拍。 上位机下发控制指令,表明此时是在线还是离线。(离线跑的节拍是在在线模式下下载的) 在线模式:如果是直接输出,按照指定格式下发CAN消息,MCU接受消息并解析,切继电器点灯;如果是存储节拍,MCU内部Flash存储上位机通过CAN下发的点灯节拍。 离线模式:从内部Flash中读取节拍,并控制继电器点灯; 模式切换按钮:不仅可以通过上位机控制
[单片机]
msp430串口接收调试
串口调试出错 串口接收配置需要注意的是开启总中断( __enable_interrupt(); ),不能仅开启串口接收中断。 #include msp430f5438a.h //********************************************** //RS485芯片方向控制 //*********************************************** void set_rs485_dir(char tx_rx) { //1---发送,0接收 if (tx_rx==1) { P9OUT|=(BIT6+BIT7); } else { P9OUT&=~(BIT
[单片机]
意法半导体stm32系列芯片的省电原因
stm32所有寄存器都需要时钟才能配置,寄存器是由D触发器组成的,只有送来了时钟,触发器才能被改写值。 任何MCU的任何外设都需要有时钟,8051也是如此;STM32为了让用户更好地掌握功耗,对每个外设的时钟都设置了开关,让用户可以精确地控制,关闭不需要的设备,达到节省供电的目的。 51单片机不用配置IO时钟,只是因为默认使用同一个时钟,这样是方便,但是这样的话功耗就降低不了。 例如,某个功能不需要,但是它还是一直运行。 STM32需要配置时钟,就可以把不需要那些功能的功耗去掉。 当你想关闭某个IO的时候,关闭它想对应的时钟使能就是了,不过在51里面,在使用IO的时候是没有设置IO的时钟的,还有在STM32中,
[嵌入式]
基于L298N的STM32的直流电机PWM调速控制
这两天研究了一下基于L298N与stm32的直流电机调速,实验结果良好,可以根据调节STM32的PWM占空比来进行直流电机的调速。实验系统图如下: 首先整个PWM实验选用的是stm32f103系列,驱动模块选择的是L298N驱动模块,以及12V直流电源。简单的来说,电机调速就是通过stm32输出PWM来进行控制L298N的使能端ENA。 L298N驱动模块 使用方法: 输出A:通道A输出,连接直流电机 输出B:通道B输出,连接电机 12V供电:主电源正极输入 GND:主电源正负极输入 5V输出:5V电压输出端,可用于给STM32开发板进行供电 ENA:通道A使能 ENB:通道B使能 IN1—IN4:逻辑输入IN1-IN
[单片机]
STM32简单任务调度的总结
概述 STM32的开发目前大多数还开处于“裸奔”的阶段,处于开发成本的考虑,可能还未嵌入任何的RTOS系统,由于没有操作系统的支持,因而不能方便的对多任务进行调度和管理。而有的任务不紧急,不需要过多的时间去循环执行,因此需要一个简单的任务调度来解决这个问题。 STM32F103ZE的AHB时钟为72MHz,通过HSE的8M倍频到72M,然后APB1预分频系数为2,所以TIM2-7时钟为2*36M。由于定时器是16位,PSC寄存器最大为65536,不支持71999,所以只能以0.1ms计数。 整个系统在获取时间的累增时,定义64位变量,即可运行很久的时间,不用担心溢出或者死机。定义64位变量有2个方法,一就是用long lo
[单片机]
stm32的RTC
两个分离的时钟:用于APB1接口的PCLK1和RTC时钟的(RTC时钟的频率必须小于PCLK1时钟频率的四分之一); RTC的时钟源的配置可以使用函数库中的函数进行配置; RTC的中断也是使用函数库中的额函数进行配置的; void RTC_Configuration(void) {//RTC的时钟为两个分离的时钟:用于APB1的PCLK1和RTC时钟(RTC的时钟的频率必须小于PCLK1时钟频率的四分之一以上 RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_BKP,ENABLE); //PWR和BKP时钟使能 PWR_BackupAccessCmd(ENAB
[单片机]