初次接触stm32f103开发板,在这次实习中我是使用stm32cubemx这个非常实用的开发工具进行学习,我这次的实习任务就是设计一个Timer定时器,老师提出的要求涉及到:
1.基于STM32开发板到PC机的串口通信,利用SecureCRT等工具,设计shell外壳,通过命令的方式控制Timer定时器;
2.采用中断技术,利用Timer定时器控制led灯的亮灭。
3.移植ucosⅢ嵌入式系统,采用多任务技术,在shell外壳的模式下实现Timer定时器和led的控制。
先介绍我这次使用的开发工具stm32cubemx,作为一个初次接触stm32的我来说,这个软件给我的感觉就是非常实用,可以让我很快的上手,因为stm32相较于51单片机来说功能强大太多了,功能强大也就代表着它里面的引脚,引脚的功能和函数有很多,不能像51单片机那样系统的学习,所以通过stm32cubemx先帮我配置好我需要的东西,然后我就可以很快的上手去写一些简单的程序,然后在写程序的过程中去慢慢了解stm32的结构。
对于stm32cubemx我推荐一个可以供大家学习的地方,小蜜蜂笔记网www.xmf393.com,我就是在这个上面学习感觉非常好。
至于怎么使用,网上有很多教程,我这里介绍几个需要注意的问题,也是我在实习过程中碰见的问题。
stm32cubemx里默认地将基础时钟源设置为systick,但是在sys模块中,可以选择其他定时器作为基础时钟源,并且也建议使用其他定时器作为基础时钟源,我这次就使用了TIM1作为基础时钟源,然后就出现了一些问题,在使用TIM1作为时钟源后,我定义其他定时器,在stm32cubemx中已经配置好了,但是生成地代码里面找不到关于TIM2地定义.c .h文件都没有,后来我就用systick作为基础时钟源,定义TIM2生成代码,我发现这个代码里面多了tim.c文件,我就把这个文件添加到上一个工程中,之后就可以找到tim2地定义了。
TIM1还会自动调用定时中断回调函数,如果其他定时器也要使用回调函数,就只需要在回调函数中加个if语句就好,代码如下:
接下来我总结一些我编写代码过程中地感悟:
与其说是编写代码,不如说成是一个寻找函数,学习函数功能,了解函数用法地过程,我这次主要用到了三个函数:1.串口接收函数HAL_UART_Receive_IT(&huart1,Rx,1); 2.外部中断回调函数: HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) 3.定时器中断开启函数HAL_TIM_Base_Start_IT(&htim2);这些函数都是在main.c中需要调用地时候声明一下,在接收到中断后就会执行回调函数,你就只需要在回调函数中去写这个这个中断想要实现地功能就好。