蓝桥杯嵌入式比赛
逸凌Time
这个作者很懒,什么都没留下…
展开
-
单片机上电总是立即执行按键程序
今天准备试写一套蓝桥杯嵌入式比赛的赛题,中间遇到按键控制LED点亮,要求按下按键,对应的LED点亮,然而我遇到了一个问题就是,每次上电,当我还没有按下按键的时候,就会有一个LED点亮,并且还是第一个或者第二个亮,我找了好久,就是找不出问题出在哪,最后仔细的研究了一下程序,我发现可能是因为上电的瞬间,单片机IO口的电平不稳定,可能会出现高低电平的跳变,于是就会导致按键检测的程序误以为有按键按下,但是...原创 2018-12-31 22:20:39 · 1381 阅读 · 0 评论 -
串口接收到的字符型数据如何转化成数字
串口接收到的字符型数据转化成数字:k = USART_RXBuff[3]-0x30;原创 2019-03-14 17:27:35 · 9858 阅读 · 0 评论 -
如何使用定时器捕获一路PWM波信号的频率和占空比
本次实验将采用定时器2的通道2产生两路频率和占空比均可调的PWM信号,然后使用定时器3的通道1来捕获其中的一路PWM波的频率和占空比。1、首先来看下产生PWM波的程序,也就是和上篇博客是一样的,只不过换了个定时器而已:void PWMOut_Init_Adjust_Duty_Fre(void)//输出两路频率可调、占空比可调的PWM波{ TIM_TimeBaseInitTypeDef T...原创 2019-03-08 19:54:25 · 6684 阅读 · 1 评论 -
如何使用定时器产生两路频率可调、占空比可调的PWM波
接上次的博客,上一篇博客介绍的是产生两路频率可调、占空比固定为50%的方波,但是更多情况下也需要调节占空比,这篇博客简单介绍下。其实和频率可调的输出基本上是一样的,只需要再加上一个Duty来控制CCRx_Val的值。先来看下配置程序:u16 CCR1_Val = 2000;//频率初始化为500Hzu16 CCR2_Val = 2000;//频率初始化为500Hzfloat Duty1 =...原创 2019-03-06 11:20:32 · 8850 阅读 · 7 评论 -
串口通信-打印
1、打印字符串:void USART_SendStr(u8 *str){ u8 i = 0; do { USART_SendData(USART2,str[i]); while(!USART_GetFlagStatus(USART2,USART_FLAG_TXE)); i++; } while(str[i]!=0);}void USART2_IRQHandler(v...原创 2019-03-01 19:21:05 · 1558 阅读 · 0 评论 -
如何使用定时器产生两路频率可调的PWM波
输出频率可调的方波(占空比不可调,默认为50%)使用定时器来产生PWM波大家应该都很熟悉,但是如何使用定时器产生频率可调的PWM波呢?这就需要使用定时器的输出比较翻转模式TIM_OCMode_Toggle。先大概介绍一些这个模式是如何工作的:输出比较翻转,顾名思义,就是程序运行的过程中,会一直拿计数器的当前计数值和比较寄存器中的值进行比较,如果当前计数值和比较寄存器中的值相等了,那么就会产生...原创 2019-03-04 22:24:38 · 8605 阅读 · 11 评论 -
I2C通信读写数据过程
1、先来看读数据的操作流程这里面需要注意的有:I2C通信启动后面不需要等待应答信号写入数据地址之后,下一步不能直接进行读取数据,需要先再一次地开启动I2C通信才可以程序如下:u8 x24c02_Read(u8 address){ u8 dat; I2CStart();//注意开启I2C之后,不需要进行应答信号的等待,如果加上了应答信号的等待,可能会导致数据无法进行正常读取 ...原创 2019-02-27 20:46:34 · 26958 阅读 · 0 评论 -
STM32建好的工程为啥下载不进去程序
刚开始准备蓝桥杯嵌入式比赛,自己试着建立了一个工程模板,把各种文件都从官方库中复制过来了,可就是下载不进去蓝桥杯嵌入式开发板里面,后来又仔细地看了视频教程,终于发现了一个不同点,就是在选择芯片型号的时候,有稍微的不同:我是从这里面选择的:因为开发板使用的是stm32f103rbt6,所以要选择STM32F103RB,而视频教程是这样选择的:同样都是选择的STM32F103RB,第二种...原创 2019-01-22 21:09:53 · 3067 阅读 · 1 评论 -
蓝桥杯比赛的RTC时钟配置
对于蓝桥杯嵌入式比赛中的RTC部分呢,也经常考,其实就是一个实时时钟,配置起来也比较容易,偷懒的话,可以直接复制粘贴赛场提供的例程程序。它需要有RTC配置、中断NVIC配置和时间显示,程序如下:u8 TimeDisplay=0;void RTC_Configuration(void){ RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_A...原创 2019-01-17 09:49:40 · 1710 阅读 · 0 评论 -
蓝桥杯嵌入式板-解决LCD使LED亮灭混乱的办法
比赛板用的是stm32f103RB芯片,64管脚,LED与LCD同用了管脚PC8~PC15(对应LED1~LED8),所以板子上增用了一个锁存器——M74HC573。在控制LED的时候,只需在输出对应电平后,给锁存器的LE(N—LE,对应PD2)管脚一个上升沿脉冲即可把对应的电平锁存到锁存器的输出端(Q...转载 2019-01-22 12:49:19 · 1464 阅读 · 0 评论 -
不能正常判断按键函数中的Flag
之前在51单片机里面对变量进行位定义是这样:bit flag = 0;然后今天在32里面写:static u8 key4_flag = 0;然后我在后面进行判断: else if(keycode == 4) { key4_flag = ~key4_flag; if(key4_flag == 1) { TIM_Cmd(TIM2, ENABLE); LCD_Cl...原创 2019-01-21 12:05:59 · 1014 阅读 · 0 评论 -
IO口复用时钟的配置
定时器3的通道1、2输出PWM波的时候,IO口一定要配置成复用推挽输出模式,但是不用开启复用时钟。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;//必须设置成为复用推挽输出 GPIO_InitStruct.GPIO_Pin =...原创 2019-01-17 10:27:43 · 2417 阅读 · 0 评论 -
蓝桥杯嵌入式比赛LCD屏如何高亮显示某一个字符
蓝桥杯嵌入式第九届赛题用到了高亮显示,主要由void LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii);函数来完成,这个函数不再是一下子操作一行了,而是一下子只操纵一个字符,参数是以ASCII码传入的,三个入口参数分别为:行、列、数据的ASCII码。来看下具体操作:1、直接显示某个字符:LCD_SetTextColor(Red);LCD_Dis...原创 2019-03-10 21:41:13 · 4991 阅读 · 2 评论