hotsauce1861

个性签名:http://www.crazyee.com
我的网站
我的博客

  • 2019-01-14
  • 回复了主题帖: arm-linux-gcc工具链下载

    freebsder 发表于 2019-1-14 09:51 九年前的帖子,世界早就变了。如上 Linaro 不错的
    {:1_122:}评论才发现是10年的帖子,光阴荏苒

  • 回复了主题帖: 学嵌入式软件编程,有没有必要报培训班?

    lingking 发表于 2019-1-14 09:39 差不多,还是偏硬件一点。纯软件设计的兴趣不大
    那可以的,对硬件知识的理解你已经有了,什么时序,总线,IO你应该没问题,再说你又有C的基础,或者你直接装一个虚拟机,也可以进行在虚拟机里写一个驱动了,这个网上教程不少,当然这个驱动暂时涉及不到硬件上的控制,只是单纯注册到系统内核里:):):)

  • 回复了主题帖: 【 ST NUCLEO-G071RB测评】_05_系统时钟配置以及串口实现的俄罗斯方块游戏

    哈哈,这个很强,mobaxterm作为串口终端,使用整页刷新的那个指令吗?如果用串口助手应该不行吧。

  • 回复了主题帖: arm-linux-gcc工具链下载

    这个网站很赞 http://releases.linaro.org/components/toolchain/ Linaro,一间非营利性质的开放源代码软件工程公司,主要的目标在于开发不同半导体公司系统单芯片(SoC)平台的共通软件,以促进消费者及厂商的福祉。针对于各个成员推出的 ARM系统单芯片(SoC),它开发了ARM开发工具、Linux内核以及Linux发行版(包括 Android 及 Ubuntu)的主要自动建构系统。

  • 回复了主题帖: 简易4人抢答器用stm32设计

    这个去淘宝上几十块钱不是就能买到了嘛

  • 回复了主题帖: arm-linux-gcc工具链下载

    用linaro应该不错的,基本囊括了通用的平台,可以看看,http://releases.linaro.org/compo ... /binaries/latest-5/

  • 回复了主题帖: 学嵌入式软件编程,有没有必要报培训班?

    如果要搞Linux驱动的话,你学STM32,无非是对C语言以及硬件裸机编程有较大提升,如果要设计Linux系统的驱动,感觉可以找一个硬件平台,比如全志的或者RK的,从环境搭建,系统编译等等等,然后还有较长的一条路走,有钱报班可以报一个。个人看法,哈哈

  • 2018-12-27
  • 回复了主题帖: BeagleBone Black设计:迟来4年的掌机实现(FC、世嘉、GBA)

    看头像,感觉我好像认识你

  • 2018-12-21
  • 回复了主题帖: 【EasyARM-RT1052测评】+ cJSON移植使用

    用过cJosn,深度较大的情况下不太友好,子json嵌套较多的情况下

  • 2018-12-07
  • 发表了主题帖: Gsensor与设备的坐标映射关系总结

                                                                    ——书到用时方恨少,很幸运最近刚好复习了一部分线性代数,没想到马上在实践中用到了。 最近在做一个项目,编译之余总结一下遇到的问题,以及心得。 Gsensor想必大家应该都用过,像MPU6050六轴,MMA8452,我大概就用过这几种,可以通过当前传感器的三轴加速度值以及角速度值去计算当前的姿态。 坐标系 左手坐标系与右手坐标系 不同点:手不同 相同: 大拇指指向Z轴/ 食指指向X轴/ 中止指向Y轴/ 这里可以用手脑补一下,画个图便一目了然 虽然有两种,那需要统一使用一种坐标系进行度量。 安卓设备的坐标系(右手坐标系进行标定) 传送门(https://developer.android.com/gu ... rs/sensors_overview) 这张图片已经比较直观了,右手坐标系。 Gsensor 坐标系 理想是丰满的,但是现实是骨感的,Gsensro chip 的layout 的坐标系并不会和手机的坐标系完全一致。 这里,旋转矩阵就出现了 理论:空间点可以表示为[X1, Y1, Z1]T的一个列向量F,做空间姿态变换的时候相当于左乘一个3阶矩阵A AF=B 那么B就是旋转后的空间点[X2, Y2, Z2]T 按照这个思想就能确定真实Gsensor的坐标数据与设备坐标的映射关系了。 在这里粗略的总结一下。{:1_122:}{:1_122:}{:1_122:} 此内容由EEWORLD论坛网友hotsauce1861原创,如需转载或用于商业用途需征得作者同意并注明出处

  • 发表了日志: Gsensor与设备的坐标映射关系总结

  • 2018-12-05
  • 回复了主题帖: 今年没有年终奖了

    已经开始裁员了{:1_98:}{:1_98:}{:1_98:}

  • 2018-11-30
  • 回复了主题帖: 【颁奖】新驱动力MM32开发板测评活动

    确认个人信息无误,感谢新驱动力提供的这次学习机会,感谢EEWORLD及管理

  • 2018-11-23
  • 回复了主题帖: 测评开发板EasyARM-RT1052资料

    周公的板子,看着很不错啊,手里有imax287了,最近忙着考试,不然可以拿过来玩一下

  • 回复了主题帖: 芯灵思SIN-IMX6UL开发板通过USB HOST传输文件到开发板

    楼主的意思是PC作为USB的host端,然后开发板开一块虚拟内存,最终开发板能被识别成大容量设备,是这样子吗?

  • 2018-11-12
  • 回复了主题帖: MM32F031开发板评测 003 之 FreeRTOS移植

    懒猫爱飞 发表于 2018-11-12 08:48 不错,帅!
    :loveliness::loveliness::loveliness:

  • 2018-11-09
  • 发表了主题帖: MM32F031开发板评测 003 之 FreeRTOS移植

    本帖最后由 hotsauce1861 于 2018-11-10 12:59 编辑 最近比较忙,因为各种忙,导致有点过劳胖了,所以还是要注意身体啊。 MM32的评测停了一段时间,因为硬件上不太熟悉,而且坛子的大牛们都已经评测的比较详细了,看完之后,我也是受益匪浅。 然后感觉可以移植一个操作系统上去试试水,考虑各种因素,决定移植FreeRTOS跑跑看。 捣鼓了一个晚上,差不多搞定最基本最纯净的系统移植了,后面看情况再移植一个CLI上去试试。 有兴趣的童鞋可以自己试试看哦,有什么问题可以一起交流一下。网上的教程比较多,参考STM32F103其实也可以的。 不过官方有给出教程,源码里面也有很多Demo了,参考Demo去改,其实也差不多了。 官方的移植教程链接地址 https://www.freertos.org/porting ... erent-hardware.html 源码下载链接 https://www.freertos.org/FreeRTOS-quick-start-guide.html 移植所需要做的工作简单总结一下: 1 FreeRTOSConfig.h 这个文件可以在源码的FreeRTOSv10.1.1\FreeRTOS\Demo\CORTEX_M0_STM32F0518_IAR\FreeRTOSConfig.h 拷贝过来 2 prot.c  portmacro.h 源码路径下FreeRTOSv10.1.1\FreeRTOS\Source\portable\RVDS\ARM_CM0 如果是其他编译器的话,需要另行选择的,Keil则使用RVDS下的文件 遇到的问题: 移植一切都很顺利,后来发现任务调度上,定时器并没有起到作用,在port.c中prvSetupTimerInterrupt函数重新初始化了sys_tick一切正常了, 源码里的修改不是很清蒸,烦恼,可能是有个宏定义出问题了,详情请看代码 main.c 中写了一个测试例程, 两个任务, 1 亮灯任务优先级低,任务开始后亮灯并堵塞500毫秒 2 灭灯任务优先级高,会抢占CPU,然后灭灯,堵塞1000毫秒并交出CPU使用权 亮灯任务堵塞结束后,重新获取CPU使用权,然后重新点亮LED。 所以main.c就是一个间隔500毫秒的LED灯闪烁程序。 ,贴一下代码吧,这样显得文章比较长:) #include "FreeRTOS.h" #include "task.h" #include "delay.h" #include "sys.h" #include "led.h" #include "HAL_gpio.h" #define STACK_SIZE                                                                128 #define LED_OFF()                 do {GPIO_SetBits(GPIOA,GPIO_Pin_8);}while(0) #define LED_ON()                  do {GPIO_ResetBits(GPIOA,GPIO_Pin_8);}while(0) #define LED_TOGGLE()                                                  do {(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_8)) \                                                                                                                                         ?(GPIO_ResetBits(GPIOA,GPIO_Pin_8)) \                                                                                                                                         :(GPIO_SetBits(GPIOA,GPIO_Pin_8));} while(0) void prvSetupHardware(void);                                                                                                                                         void vCreateFlashTasks(void);                                                                                                                                 void vTaskCodeLEDON( void * pvParameters );                                                                                                                                        void vTaskCodeLEDOFF( void * pvParameters );                                                                                                                                         int main( void ) {    /* Setup the microcontroller hardware for the demo. */    prvSetupHardware();    /* Leave this function. */    vCreateFlashTasks();    /*Start the RTOS scheduler. */    vTaskStartScheduler();    /* Should never get here! */ } void prvSetupHardware(void){              GPIO_InitTypeDef  GPIO_InitStructure;         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);     GPIO_InitStructure.GPIO_Pin  =  GPIO_Pin_8;     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     GPIO_Init(GPIOA, &GPIO_InitStructure);                 LED_OFF();                 //System_Clock_Init(6);                 //delay_init();                 //LED_ON(); } #if 1 void vCreateFlashTasks(void){                          BaseType_t xReturned;                 TaskHandle_t xHandle = NULL;     /* Create the task, storing the handle. */     xReturned = xTaskCreate(                     vTaskCodeLEDON,       /* Function that implements the task. */                     "LEDON",          /* Text name for the task. */                     STACK_SIZE,      /* Stack size in words, not bytes. */                     ( void * ) 1,    /* Parameter passed into the task. */                     tskIDLE_PRIORITY + 1,/* Priority at which the task is created. */                     &xHandle );      /* Used to pass out the created task's handle. */                                                                                                                                                                       /* Create the task, storing the handle. */     xReturned = xTaskCreate(                     vTaskCodeLEDOFF,       /* Function that implements the task. */                     "LEDOFF",          /* Text name for the task. */                     STACK_SIZE,      /* Stack size in words, not bytes. */                     ( void * ) 1,    /* Parameter passed into the task. */                     tskIDLE_PRIORITY + 2,/* Priority at which the task is created. */                     &xHandle );      /* Used to pass out the created task's handle. */                                                                                                              if( xReturned == pdPASS )     {         /* The task was created.  Use the task's handle to delete the task. */         //vTaskDelete( xHandle );     }          } /* Task to be created. */ void vTaskCodeLEDOFF( void * pvParameters ) {     /* The parameter value is expected to be 1 as 1 is passed in the     pvParameters value in the call to xTaskCreate() below.     configASSERT( ( ( uint32_t ) pvParameters ) == 1 );                 */                 const TickType_t xDelay = 500 / portTICK_PERIOD_MS;     for( ;; )     {                                                 LED_ON();                                 vTaskDelay(xDelay);     } } /* Task to be created. */ void vTaskCodeLEDON( void * pvParameters ) {     /* The parameter value is expected to be 1 as 1 is passed in the     pvParameters value in the call to xTaskCreate() below.     configASSERT( ( ( uint32_t ) pvParameters ) == 1 );                 */                 const TickType_t xDelay = 1000 / portTICK_PERIOD_MS;                 //LED_ON();     for( ;; )     {                                                 /* Task code goes here. */                         LED_OFF();                                 vTaskDelay(xDelay);     } } #endif复制代码 Demo的地址 https://github.com/hotsauce1861/MM32_FreeRTOS.git

  • 2018-11-02
  • 回复了主题帖: 又搞了一个通宵

    天塌下来都不能通宵了

  • 2018-10-31
  • 发表了主题帖: MM32F031开发板评测 001 之 GPIO的使用点亮板载LED

    克服诸多困难之后,暂时先使用一下GPIO,不太熟悉,还好官方提供比较完善的历程, 参照例子简单修改了一下,GPIOA8输入低电平,可以点亮板载的LED灯D2。 #include "HAL_gpio.h" #define LED_OFF()                  do {GPIO_SetBits(GPIOA,GPIO_Pin_8);}while(0) #define LED_ON()                  do {GPIO_ResetBits(GPIOA,GPIO_Pin_8);}while(0) #define LED_TOGGLE()  do {(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_8)) \                                                                                 ?(GPIO_ResetBits(GPIOA,GPIO_Pin_8)) \                                                                                 :(GPIO_SetBits(GPIOA,GPIO_Pin_8));} while(0) int main(void)    {     GPIO_InitTypeDef  GPIO_InitStructure;         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);     GPIO_InitStructure.GPIO_Pin  =  GPIO_Pin_8;     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     GPIO_Init(GPIOA, &GPIO_InitStructure);                         LED_ON();     while(1)     {     } } 复制代码 遇到一个uart.c中的一个警告,IDE将其作为错误处理了,当然可以消灭一下这个问题 因为缺少返回类型,编译器默认认为 返回类型为 int,所以在这里加上一个返回类型即可,最终解决改为 void _sys_exit(int x) {     x = x; } 此内容由EEWORLD论坛网友hotsauce1861原创,如需转载或用于商业用途需征得作者同意并注明出处 暂时先到这里

  • 发表了日志: MM32F031开发板评测 001 之 GPIO的使用点亮板载LED

最近访客

< 1/1 >

统计信息

已有44人来访过

  • 芯币:997
  • 好友:8
  • 主题:8
  • 回复:78
  • 课时:--
  • 资源:1

留言

你需要登录后才可以留言 登录 | 注册


Abbott2014 2014-12-6
hotsauce1861: 先导入的库文件是没有加载3D文件的,Embed STEP Model是为了加载相应PCB文件的3D文件,
知道了,谢
Abbott2014 2014-12-6
你好,看了你的:最近搞了搞3D的PCB,总结了一下,分享一下3D库,这个文章。
有问题:在封装库里要导入3D模型,要按Embed STEP Model去文件夹里选,那么先导入的库文件,有什么作用呀
查看全部