你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于Nucleo-L496ZG的FreeRTOS信号量和队列

[复制链接]
寂寞,点燃一支烟 发布时间:2018-4-15 11:21
1.工程新建,楼主比较懒,习惯用STM32cubeMX生成代码,新建过程中选Nucleo-L496ZG板子的工程,为了减少配置,我直接将不用的MCU管教关闭了,
    具体打开的外设有 LPUART1 ,LED_Blue,LED_Red,系统时钟用内部时钟。调试选择 Serial Write。(后续要用JTAG它调试 )



2. 配置FreeRTOS,和外设 关于L496ZG串口波特率配置为9600以上,具体原因看帖子
    https://www.stmcu.org.cn/document/detail/index/id-218816?lat
   led和串口的配置我就不放图了,可以参考别人的帖子,
3.  FreeRTOS 简单配置。生成IAR工程
4.在串口文件中  添加printf重定义文件 ,类型就是原子哥的方法
1)
#if 1
#pragma import(__use_no_semihosting)            
//标准库需要的支持函数                 
struct __FILE
{
        int handle;
};
FILE __stdout;      
//定义_sys_exit()以避免使用半主机模式   
void _sys_exit(int x)
{
        x = x;
}
//重定义fputc函数
int fputc(int ch, FILE *f)
{         
        while((LPUART1->ISR&0X40)==0);//循环发送,直到发送完毕   
        LPUART1->TDR=(uint8_t)ch;      
        return ch;
}
#endif

2)
  添加测试代码
led任务  
void StartDefaultTask(void const * argument)
{
  for(;;)
  {
    HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
    osDelay(500);
  }
}

printf 代码
/* StartTask03 function */
void StartTask03(void const * argument)
{
  /* USER CODE BEGIN StartTask03 */
  /* Infinite loop */
  for(;;)
  {
    printf("基于 Nucleo-L496ZG FreeRTOS 培训测试  \r\n");
    osDelay(1000);
  }
  /* USER CODE END StartTask03 */
}

5 结果如下










收藏 评论3 发布时间:2018-4-15 11:21

举报

3个回答
寂寞,点燃一支烟 回答时间:2018-4-15 11:23:14
测试功能,队列后续更新
寂寞,点燃一支烟 回答时间:2018-4-16 23:57:38
添加源代码  消息队列 按按键会发送    接收到串口打印出来

FreeRTOS.rar

下载

13.97 MB, 下载次数: 11

队列

zero99 回答时间:2018-4-17 14:52:20
感谢分享,请汇总到4月技术原创
https://www.stmcu.org.cn/module/forum/thread-615497-1-1.html

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版