如何利用stm32cubemx下载进行STM32开发

如何利用STM32CubeMX进行STM32开发_百度知道后使用快捷导航没有帐号?
查看: 6108|回复: 3
注册时间最后登录阅读权限60积分5129精华0帖子
状元, 积分 5129, 距离下一级还需 4871 积分
TA的每日心情开心1&小时前签到天数: 1239 天[LV.10]以坛为家III
STM32cubeMX推出一久了,而且现在除了F1以外基本上都有了。这段时间乘有点时间,来试试这个工具。
硬件资源:采用STM32F0的探索套件
实验目的:
1、完成串口发送8个数据功能,配置串口为接收中断,当串口接收到指定数目的数据时,产生中断,中断函数将接收的数据发送出来
2、本实验具有按键(PA0)中断功能,当按下按键,串口发送数据。
具体配置:
1、选择管脚,PA0用于按键,点击该引脚选择输入。
& && && && & PC8,PC9用于LED灯。点击该引脚选择输出。
& && && && & PA9,PA10用于串口1,串口模式选择Asynchronous。(但选择并配置了串口,这两个引脚自动就变绿了)
2、串口配置:(这个类似于我们以前编程时的串口初始化部分,包括波特率、数据位、停止位等)
这里需要注意的是:波特率最小都是115200,想设置9600,那只能最后在程序中改了。
3、串口中断配置:
4、完了以后就可以生成IAR或KEIL程序了,这一步大家都知道了,就不截图说明了。
以下是我的测试程序。
程序说明:
1、首先定义发送接收数组
uint8_t TxData[8]= {0x55,0x65,0x01,0x02,0x03,0x04,0x05,0x06};uint8_t RxData[8];2、如果是轮询方式发送数据,采用HAL_UART_Transmit(&huart1, TxData,8,10);&&如果是中断方式接收数据,采用HAL_UART_Receive_IT(&huart1, RxData,8);&&while (1)&&{& && && &&&HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_9);& && && &&&HAL_Delay(1000);& && && &&&//HAL_UART_Transmit(&huart1,TxData,8,10);&&/* 通过串口1发送数组TxData的8个数据 */& && && &&&HAL_UART_Receive_IT(&huart1, RxData,8);& &&&/* 采用中断方式接收8个数据 */&&}3、串口接收中断服务程序:void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle){& && && &HAL_UART_Transmit(&huart1,RxData,8,10);}4、按键中断服务程序:void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){&&if (GPIO_Pin == GPIO_PIN_0)&&{& && &HAL_UART_Transmit(&huart1,RxData,8,10);&&}}使用总结、疑问及需要注意的地方:1、串口中断配置只是具有串口全局中断,如何配置接收中断或发送中断,或空闲中断?(这点等待高手帮忙)2、HAL_UART_Receive_IT(&huart1, RxData,8);& &如果放置在while循环中,那么就可以连续进行接收中断,RxData的值就会根据接收的数据发生变化,如果放在while外面,那么只进行一次接收中断。3、针对第2点,那么如果要一直进行中断配置,就要在主程序的while中调用,如果只是进行一次,那么就在需要的时候调用。4、由于不能配置中断类型,所以如果把中断服务函数HAL_UART_Transmit(&huart1, RxData,8,10);放在voidUSART1_IRQHandler(void)里面就只能收到第一个数据,其他是0。比如串口调试助手发送0x55,0x65,0x01,0x02,0x03,0x04,0x05,0x06,那么中断中发送出来的数据就是0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00
注册时间最后登录阅读权限40积分988精华0帖子
举人, 积分 988, 距离下一级还需 12 积分
TA的每日心情奋斗 22:38签到天数: 232 天[LV.7]常住居民III
不错呢 很好的学习分享
注册时间最后登录阅读权限60积分8140精华0帖子
状元, 积分 8140, 距离下一级还需 1860 积分
TA的每日心情开心 12:45签到天数: 430 天[LV.9]以坛为家II
谢谢楼主分享!
注册时间最后登录阅读权限40积分592精华0帖子
举人, 积分 592, 距离下一级还需 408 积分
TA的每日心情开心 08:34签到天数: 141 天[LV.7]常住居民III
学习一下,hal库的函数太多了
爱板会员勋章
注册成为爱板网会员
活跃会员勋章
经常参与各类话题的讨论,发帖内容较有主见
站长推荐 /3
我们从众多的智能硬件中选择 “智能插座”来作为话题的切入点。不管你有没有使用过,但站在用户的角度,你一定有你的想法和发言权。针对智能插座,说出你的想法和观点,你觉得怎样才能算的上一个好的智能插座?查看详情
10月26日,ADI、博通、Murata等业内大咖将汇聚上海探讨物联网领域的现状和未来,届时您将获得精彩的技术内容分享、与行业大牛面对面交流的机会、也将有幸见证2016年物联网创新设计大赛的优秀获奖作品,同时,我们还将为到厂的各位准备了大疆无人机、华米智能手表、红米手机等精美礼品!立即报名参加吧
泰克推出了多合一的混合域示波器,一台仪器包含了示波器、频谱仪、矢量分析仪与逻辑分析仪等多种功能。既可以满足物联网设计的跨域测量调试需求,又能一机多用,节省了公司在测试仪器上的开支。查看泰克示波器相关视频和技术文档,且看1台示波器如何媲美6台测试仪。
Powered by Discuz!开发利器:STM32Cube & STM32CubeMX
单片机&嵌入式
单片机应用
嵌入式操作系统
学习工具&教程
学习和开发单片机的必备工具
(有问必答)
(带你轻松入门)
电子元件&电路模块
当前位置: >>
>> 浏览文章
开发利器:STM32Cube & STM32CubeMX
STM32Cube 是一个全面的软件平台,包括了ST产品的每个系列。(如,STM32CubeF4 是针对STM32F4系列).
平台包括了STM32Cube 硬件抽象层和一套的中间件组件(RTOS, USB, FS, TCP/IP,& Graphics, 等等).
1) 安装STM32CubeMX (图形化工具,用于STM32的配置)
2)安装CUBE工具(固件例程和TCP/IP,USB ,FS等驱动)
&& -& 直观地进行STM32选择
& -&& 图形化配置
& - C代码项目产生,涵盖STM32初始化部分。兼容IAR, KEIL和GCC编译器
& - 支持Eclips
从这里开始吧:-)
【】【】【】【】
上一篇:下一篇:
CopyRight @
单片机教程网
, All Rights ReservedHi,欢迎来到中国嵌入式培训第一品牌 - 华清远见嵌入式学院,专注嵌入式工程师培养13年!
全国免费报名电话:400-706-1880
当前位置: >
> 关于使用stm32cubemx生成代码后移植Ucos―III的方法
关于使用stm32cubemx生成代码后移植Ucos―III的方法
时间:作者:华清远见
介绍一下Ucos&iii的优点:相比于Ucos&ii,UCOS-II主要针对8位、16位机以及低端32位机,UCOS-III主要针对高端32位处理器和64位处理器,在性能上有了很大的提升,有了不少的提升,例如任务数没有显示,不同的任务可以拥有相同的优先级,相同优先级的任务调度采用时间片轮转法。对一些内核对象,例如信号量,可以在运行过程中创建和删除,不用像ucos-ii那样必须在编译时分配好。内核对象数也没有限制。
Ps:不过如果芯片处理能力有限的话,建议还是量力而为,选择ucos&ii足够就没必要选择ucos&iii,ucos-iii显然适用于更加复杂的系统应用,本身占用的内存空间也较大,而且代码显得比较累赘。例如创建一个任务,就要这样的麻烦
void OSTaskCreate (OS_TCB *p_tcb,
CPU_CHAR *p_name,
OS_TASK_PTR p_task,
void *p_arg,
OS_PRIO prio,
CPU_STK *p_stk_base,
CPU_STK_SIZE stk_limit,
CPU_STK_SIZE stk_size,
OS_MSG_QTY q_size,
OS_TICK time_quanta,
void *p_ext,
OS_OPT opt,
OS_ERR *p_err);
这么多的参数,如果初学的话,一个个去弄懂也没必要,但是如果不弄懂又学不会,所以如果入门ucos操作系统的话,本人介意先学ucos&ii,学了ucos&ii在去开ucos&iii,你会发现系统时基,任务创建和调度原理其实是一样的,只不过部分功能做了优化,通俗点讲就是更加严谨了,好了,理论只是帮助实际应用的东西,太过于执着于理论就钻了牛角尖了,本人并非老师,只是一个普通的研发人员,所以以实际产品应用为主,所以就说一下实际应用吧。
首先我们要到网上下载ucos&iii的源码,官网是:/打开看到
点击红色框部分,就会进入下载界面
然后就可以下载了
咱们下载的是下面这个,
下好以后,打开相关文件夹,将源码复制到工程目录下
然后打开keil5工程,在工程目录里添加源码,目录结构如下:
好了,上面只是基础的准备工作,熟了以后大家可以根据自己喜好去创建工程目录结构,目前来说先按作者的来就可以了,这些其实是无关紧要的事情,大家目的是为了学习原理并把它应用到实际工作中嘛。
下面我们就开始真正的将这个系统和cpu关联起来了,相信大家熟悉操作系统的都知道时基这个概念,ucos操作系统同样需要一个时基,正好我们的stm32芯片都有一个系统滴答计时器,这里我们将它作为ucos操作系统的时基刚好,那么怎么做呢,其实是有两个方法,
大致原理是一样的,我们打开startup_stm32f407xx.s文件,看到这里有栈空间申请的代码
下面有相关函数调用的声明:
那么这两个函数是做什么的呢?
一个是任务调度函数,一个是systick中断服务函数,我们打开os_cpu_a.asm和os_cpu_c.c,可以看到源码
只要相关名字对应就可以了,我这里是改的startup_stm32f407xx.s启动文件的相关联部分,不希望修改ucos&iii源码,但有的人是不希望修改stm32cubemx生成的源码,而去修改ucos&iii的相应部分,都可以,只要函数名一致就可。
Ps:stm32cubemx生成代码的systick定时器为1ms一次中断,如果需要调节,可以再时钟配置函数里去修改。
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
学院最新动态

我要回帖

更多关于 stm32cubemx 4.16 的文章

 

随机推荐