燃起来 ESP32移植LVGL最新版本8.2

原创 专注于无线通信的蓬勃 2022-04-13 21:25

 零. 声明


本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:

第一篇:ESP-IDF基本介绍,主要会涉及模组,芯片,开发板的介绍,环境搭建,程序编译下载,启动流程等一些基本的操作,让你对ESP-IDF开发有一个总体的认识,比我们后续学习打下基础!

第二篇:ESP32-IDF外设驱动介绍,主要会根据esp-idf现有的driver,提供各个外设的驱动,比如LED,OLED,SPI LCD,TOUCH,红外,Codec ic等等,在这一篇中,我们不仅仅来做外设驱动,还会对常用的外设总线做一个介绍,让大家知其然又知其所以然!

第三篇:目前比较火热的GUI LVGL介绍,主要会设计LVGL7.1,LVGL8的移植介绍,并且也会介绍各个组件,知道原理后,最后,我们会推出一款组态软件来构建我们的GUI,来提升我们的效率!

第四篇:ESP32-蓝牙,熟悉我的,应该都知道,我即使从事蓝牙协议栈的开发的,所以这个是我们独有的优势,在这一篇章,我们会提供不仅仅是蓝牙应用方法的知识,也会应用结合蓝牙底层协议栈的理论,让你彻底从上到下打通蓝牙任督二脉!

第五篇:Wi-Fi介绍,熟悉我的,应该也知道,我们也做过一款sdio wifi的驱动教程板子,所以在wifi这方面我们也是有独有的优势,在这一篇章,我们同样不仅仅提供Wi-Fi应用方面的知识,也会结合底层理论,让你对Wi-Fi有一个清晰的认知!

另外,我们的教程包括但是不局限于以上篇章,为了给你一个更好的导航,以下信息尤其重要,请详细查看!!

------------------------------------------------------------------------------------------------------------------------------------------

购买开发板(点击我)

文档目录(点击我)

Github代码仓库(点击我)

蓝牙交流扣扣群:539357317

微信公众号↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

​​​​

------------------------------------------------------------------------------------------------------------------------------------------

一.创建基于ESP32的LVGL工程

步骤1)我们把https://github.com/sj15712795029/esp32_study/tree/main/1_base_project/template-app这里面我们创建的模板工程复制出来,放到esp32_study\3_lvgl\1_lvgl8_2_porting 文件夹中

步骤2)打开vscode中ESP32插件的terminal

步骤3)执行命令 mkdir components 创建一个components的文件夹,用于存在lvgl

步骤4)通过cd ./components 进入components路径

步骤5)在terminal敲命令行

git clone -b release/v8.2 https://gitee.com/my_lvgl/lvgl

下载lvgl 8.2版本的代码

当然你也可以在github来clone,命令行如下:

git clone -b release/v8.2 https://github.com/lvgl/lvgl

但是github网站不稳定,所以还是推荐gitee

步骤6)在terminal敲命令行

git clone https://gitee.com/my_lvgl/lvgl_esp32_drivers

下载ESP32的驱动

当然你也可以在github来clone,命令行如下:

git clone https://github.com/lvgl/lvgl_esp32_drivers

但是github网站不稳定,所以还是推荐gitee

整个完毕后目录如下:

├─.devcontainer

├─.vscode

├─components

│ ├─lvgl

│ └─lvgl_esp32_drivers

└─main

二.编译代码

此时我们仅仅是从git拉下来代码,没有写应用程序,也没有修改过代码,直接编译,我们看到会遇到编译错误

错误1:

../components/lvgl_esp32_drivers/lvgl_helpers.h:57:25: error: 'LV_HOR_RES_MAX' undeclared (first use in this function); did you mean 'LV_HOR_RES'?

解决方法:

在esp32_study\3_lvgl\1_lvgl8_2_porting\components\lvgl_esp32_drivers文件夹中的lvg_helpers.h中定义一个宏#define LV_HOR_RES_MAX 320,顺便加上另外一个宏定义

错误2:

../components/lvgl_esp32_drivers/lvgl_helpers.c:157:28: error: 'SPI_HOST_MAX' undeclared (first use in this function); did you mean 'GPIO_PORT_MAX'?

解决方法:

在esp32_study\3_lvgl\1_lvgl8_2_porting\components\lvgl_esp32_drivers文件夹中的lvg_helpers.h中定义一个宏

#define SPI_HOST_MAX 3

三. 配置LCD Display的引脚

我们看到lvgl_esp32_drivers支持的LCD display controller型号有如下几种,而我们的开发板是用的ILI9488,所以我们不需要额外的去写驱动,只需要menuconfig配置一下就可以了。

1.LCD display相关的原理图

ESP32 MCU的原理图如下:

LCD的接口如下:

ESP32引脚

LCD display引脚

作用

ESP32复位引脚

ESP32_RST

LCD复位引脚,跟随ESP32复位而复位

IO14

IO14_TFT_SCK

LCD display SPI的时钟引脚

IO2

IO2_TFT_RS

也叫做DC引脚,主要用于区分是data数据还是command数据

IO15

IO15_TFT_CS

LCD display的SPI片选引脚

IO13

IO13_TFT_MOSI

LCD Display SPI的主角色发送,从角色接收引脚

IO12

IO12_TFT_MISO

LCD Display SPI的主角色接收,从角色发送引脚

IO16

TFT_BL

LCD Display的背光引脚

2.配置menuconfig LCD display部分

打开menuconfig配置,拉到LVGL ESP32 driver部分,选择TFF display controller

然后按照我们如下配置

以上引脚有两个注意的点:

1)我们不选择reset的gpio,因为我们的LCD是跟随ESP32 reset

2)背光的1是电量LCD的背光

四. 配置LCD Touch的引脚

我们看到lvgl_esp32_drivers支持的LCD touch 型号有如下几种,而我们的开发板是用的XPT2046,所以我们不需要额外的去写驱动,只需要menuconfig配置一下就可以了。

1.LCD touch相关的原理图

ESP32 MCU的原理图如下:

LCD的接口如下:

ESP32引脚

LCD touch引脚

作用

IO27

IO27_TP_CLK

LCD touch的SPI时钟引脚

IO33

IO33_TP_CS

LCD touch的SPI片选引脚

IO32

IO32_TP_MOSI

LCD Touch SPI的主角色发送,从角色接收引脚

IO39

IO39_TP_MISO

LCD Touch SPI的主角色接收,从角色发送引脚

IO36

IO36_TP_IR

LCD Touch的中断引脚

2.配置menuconfig LCD Touch部分

打开menuconfig配置,拉到LVGL ESP32 driver部分,选择TFT Touch controller

然后按照我们如下配置

 

五.使能一个Demo

1.使能music palyer demo

我们使能一个music palyer的demo,到时候来增加效果

2.使能music palyer demo使用的字体

3.开启刷屏帧率以及CPU loading

六.编写APP

/* LVGL Example project
 *
 * Basic project to test LVGL on ESP32 based projects.
 *
 * This example code is in the Public Domain (or CC0 licensed, at your option.)
 *
 * Unless required by applicable law or agreed to in writing, this
 * software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied.
 */
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_freertos_hooks.h"
#include "freertos/semphr.h"
#include "esp_system.h"
#include "driver/gpio.h"

/* Littlevgl specific */
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
#include "lvgl.h"
#include "demos/lv_demos.h"
#else
#include "lvgl/lvgl.h"
#include "lvgl/demos/lv_demos.h"
#endif


#include "lvgl_helpers.h"

/*********************
 *      DEFINES
 *********************/
#define TAG "demo"
#define LV_TICK_PERIOD_MS 1

/**********************
 *  STATIC PROTOTYPES
 **********************/
static void lv_tick_task(void *arg);
static void guiTask(void *pvParameter);
static void create_demo_application(void);

/**********************
 *   APPLICATION MAIN
 **********************/
void app_main()
{

    /* If you want to use a task to create the graphic, you NEED to create a Pinned task
     * Otherwise there can be problem such as memory corruption and so on.
     * NOTE: When not using Wi-Fi nor Bluetooth you can pin the guiTask to core 0 */
    xTaskCreatePinnedToCore(guiTask, "gui", 4096 * 2, NULL, 0, NULL, 1);
}

/* Creates a semaphore to handle concurrent call to lvgl stuff
 * If you wish to call *any* lvgl function from other threads/tasks
 * you should lock on the very same semaphore! */
SemaphoreHandle_t xGuiSemaphore;

static void guiTask(void *pvParameter)
{

    (void)pvParameter;
    xGuiSemaphore = xSemaphoreCreateMutex();

    lv_init();

    /* Initialize SPI or I2C bus used by the drivers */
    lvgl_driver_init();

    lv_color_t *buf1 = heap_caps_malloc(DISP_BUF_SIZE * sizeof(lv_color_t), MALLOC_CAP_DMA);
    assert(buf1 != NULL);

    /* Use double buffered when not working with monochrome displays */
#ifndef CONFIG_LV_TFT_DISPLAY_MONOCHROME
    lv_color_t *buf2 = heap_caps_malloc(DISP_BUF_SIZE * sizeof(lv_color_t), MALLOC_CAP_DMA);
    assert(buf2 != NULL);
#else
    static lv_color_t *buf2 = NULL;
#endif

    static lv_disp_draw_buf_t disp_buf;

    uint32_t size_in_px = DISP_BUF_SIZE;

#if defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_IL3820 || defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_JD79653A || defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_UC8151D || defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_SSD1306
    size_in_px *= 8;
#endif

    /* Initialize the working buffer depending on the selected display.
     * NOTE: buf2 == NULL when using monochrome displays. */
    lv_disp_draw_buf_init(&disp_buf, buf1, buf2, size_in_px);

    lv_disp_drv_t disp_drv;
    lv_disp_drv_init(&disp_drv);
    disp_drv.flush_cb = disp_driver_flush;

    /* When using a monochrome display we need to register the callbacks:
     * - rounder_cb
     * - set_px_cb */
#ifdef CONFIG_LV_TFT_DISPLAY_MONOCHROME
    disp_drv.rounder_cb = disp_driver_rounder;
    disp_drv.set_px_cb = disp_driver_set_px;
#endif

    disp_drv.draw_buf = &disp_buf;
    disp_drv.hor_res = LV_HOR_RES_MAX;
    disp_drv.ver_res = LV_VER_RES_MAX;
    lv_disp_drv_register(&disp_drv);

    /* Register an input device when enabled on the menuconfig */
#if CONFIG_LV_TOUCH_CONTROLLER != TOUCH_CONTROLLER_NONE
    lv_indev_drv_t indev_drv;
    lv_indev_drv_init(&indev_drv);
    indev_drv.read_cb = touch_driver_read;
    indev_drv.type = LV_INDEV_TYPE_POINTER;
    lv_indev_drv_register(&indev_drv);
#endif

    /* Create and start a periodic timer interrupt to call lv_tick_inc */
    const esp_timer_create_args_t periodic_timer_args = {
        .callback = &lv_tick_task,
        .name = "periodic_gui",
    };
    esp_timer_handle_t periodic_timer;
    ESP_ERROR_CHECK(esp_timer_create(&periodic_timer_args, &periodic_timer));
    ESP_ERROR_CHECK(esp_timer_start_periodic(periodic_timer, LV_TICK_PERIOD_MS * 1000));

    /* Create the demo application */
    create_demo_application();

    while (1)
    {
        /* Delay 1 tick (assumes FreeRTOS tick is 10ms */
        vTaskDelay(pdMS_TO_TICKS(10));

        /* Try to take the semaphore, call lvgl related function on success */
        if (pdTRUE == xSemaphoreTake(xGuiSemaphore, portMAX_DELAY))
        {
            lv_task_handler();
            xSemaphoreGive(xGuiSemaphore);
        }
    }

    /* A task should NEVER return */
    free(buf1);
#ifndef CONFIG_LV_TFT_DISPLAY_MONOCHROME
    free(buf2);
#endif
    vTaskDelete(NULL);
}

static void create_demo_application(void)
{
    lv_demo_music();
}

static void lv_tick_task(void *arg)
{
    (void)arg;

    lv_tick_inc(LV_TICK_PERIOD_MS);
}

我们先确保编译通过,待会再讲解程序,

我们编译的时候遇到了一个错误,就是lv_demo_music没有定义

问题原因:是因为lvgl中的demo没有编译进来

解决方法:在lvgl/env_support/cmake/esp.cmake中增加${LVGL_ROOT_DIR}/demos/*.c,如图

如果你们还有更好的方法可以给我说

OK,到了程序讲解时间了,整个程序很简单,我们从几个维度来说明一下

我们来看下官方的初始化过程,连接如下:Set up a project — LVGL documentation

  • Call lv_init().
  • Initialize your drivers.
  • Register the display and input devices drivers in LVGL. Learn more about Display and Input device registration.
  • Call lv_tick_inc(x) every x milliseconds in an interrupt to report the elapsed time to LVGL. Learn more.
  • Call lv_timer_handler() every few milliseconds to handle LVGL related tasks. Learn more.

具体的buffer & display & touch部分的移植我们在后面介绍!!

七.运行程序

我们在运行程序中经常会遇到这个问题

E (895) esp_image: Image length xxxx doesn't fit in partition length 1048576

从而导致esp32会一直不断重启!错误如下图所示:

E (895) esp_image: Image length xxxx doesn't fit in partition length 1048576

E (900) boot: Factory app partition is not bootable

E (906) boot: No bootable app partitions in the partition table

解决问题:

1.看我们app的大小

我们出现问题的这个app的image size是:~2083013 bytes (.bin may be padded larger),也就是1.98M,如下图所示:

NOTED:人家备注很清楚,bin文件的话可能更大!

而我们的板子的模组是16M的,所以我们为了保险起见,我们就弄4M吧!

2.选择自定义分区表

我们在menuconfig中选择custom partition table csv

我们保存后,直接编译,发现报错:

-- Build files have been written to: C:/Users/12475/Desktop/esp-idf/esp32_study/3_lvgl/1_lvgl8_2_porting/build

ninja: error: '../partitions.csv', needed by 'partition_table/partition-table.bin', missing and no known rule to make it

终端进程“C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command ninja ”已终止,退出代码: 1。

是因为我们还没有创建partition table分区文件呢!

3.创建分区文件

工具工具,esp-idf的插件太好用了,只要你能想到的工具,他基于都嵌入到vscode中,

我们在查看->命令面板 搜索partition table,出来以下画面,我们打开分区编辑器UI

出来以下画面,我们点击Add New Row分别添加

编辑成下图这个样子,然后点击save保存就可以了

4.修改flash大小

正常添加分区表后,我们开始编译,发现报错,错误信息为:

Partitions defined in 'C:/Users/12475/Desktop/esp-idf/esp32_study/3_lvgl/1_lvgl8_2_porting/partitions.csv' occupy 4.1MB of flash (4259840 bytes) which does not fit in configured flash size 2MB. Change the flash size in menuconfig under the 'Serial Flasher Config' menu.

简单!原因是我们把app大小定位为4M,但是flash大小没有修改,我们继续修改

在menuconfig中搜索flash,根据你的flash大小修改,我们的开发板flash是16M的,所以我们修改成16M,如图

如果想更多的了解分区的理论,参照我的另外一篇文章:

esp_image: Image length xxxx doesn‘t fit in partition length 1048576问题解决思路_Wireless_Link的博客-CSDN博客

程序运行效果:

ESP32 SPI LCD运行LVGL 8.2 music demo_哔哩哔哩_bilibili

TODO List:

优化帧率!!!有愿意讨论的小伙伴一起讨论下

专注于无线通信的蓬勃 朝气蓬勃——不积跬步 无以至千里, 不积小流 无以成江海
评论 (0)
  •        深夜的公园里,当路灯熄灭后,传统监控摄像头只能拍出模糊的黑白画面,仿佛老式胶片电影里的场景。而搭载为旌瑶光ISP的摄像头,却能像猫科动物一样,在几乎全黑的环境中捕捉到行人衣服的颜色、树叶的纹理,甚至快速跑动的宠物狗毛发细节。这种从“黑白默片”到“全彩4K电影”的跨越,背后是为旌瑶光ISP对传统红外补光技术的颠覆性创新。一、传统方案之困:被红外光“绑架”的夜视世界        传统安防摄像头依赖红外
    中科领创 2025-03-07 16:50 438浏览
  • ​CS6212是一款可分别用于USB Type-C主机/显示端口源应用的带重定时的有源开关。这设备符合USB 3.2标准版本1.0和USB Type-C标准上的VESA DisplayPort Alt模式 1.0版,支持通过GPIO或12C进行灵活的模式切换。此设备支持USB 3.2第2x1代 运行速度高达10Gbps,DisplayPort 1.4运行速度高达HBR3 8.1Gbps。CS6212管脚分布及功能定义:CS6212支持重定时器训练,并支持USB 3.2标准中定义的状态状态机(RT
    QQ1540182856 2025-03-07 10:09 198浏览
  • ASL6328芯片支持高达 6.0 Gbps 运行速率的交流和直流耦合输入T-MDS 信号,具备可编程均衡和抖动清理功能。ASL6328 是一款单端口 HDMI/DVI 电平转换 / 中继器,具有重新定时功能。它包含 TypeC双模式 DP 线缆适配器寄存器,可用于识别线缆适配器的性能。抖动清理 PLL(锁相环)能够消除输入抖动,并完全重置系统抖动容限,因此能更好地满足更高数据速率下 HDMI 抖动合规性要求。设备的运行和配置可通过引脚设置或 I2C 总线实现。自动断电和静噪功能提供了灵活的电
    QQ1540182856 2025-03-06 14:26 145浏览
  • 文/Leon编辑/cc孙聪颖2025 年全国两会正如火如荼地进行,这一备受瞩目的年度盛会,再度成为社会各界聚焦的核心。会议期间,代表们积极建言献策,诸多建议迅速引发舆论热潮,频繁登上热搜榜单。其议题范畴极为广泛,紧密围绕产业革新、民生保障与就业促进、教育优化升级、AI 技术规范与发展等多个关键领域展开探讨。这些热点议题不仅精准呼应了当下经济社会发展的紧迫需求,更深度契合了民众对美好生活的向往与诉求,因此在网络空间中激起千层浪,吸引了海量网民的高度关注 。全国人大代表、美的集团首席财务官钟铮,今年
    华尔街科技眼 2025-03-08 20:11 96浏览
  • 一、系统概述MYD-LD25X搭载的Debian系统包含以太网、WIFI/BT、USB、RS485、RS232、CAN、AUDIO、HDMI显示和摄像头等功能,同时也集成了XFCE轻量化桌面、VNC远程操控、SWITCH网络交换和TSN时间敏感网络功能,为工业设备赋予“超强算力+实时响应+极简运维”的体验!类别名称描述源码TF-AArm Trusted Firmware 2.8OP-TEEOP-TEE 3.19BootloaderU-boot 2022.10KernelLinux Ke
    米尔电子嵌入式 2025-03-07 14:08 326浏览
  • 3月9日,海信电视举行“巅峰画质 影游旗舰”新品发布会,正式发布E8Q旗舰系列电视新品,搭载全球首颗信芯AI画质芯片H7、全新升级的黑曜屏Ultra、330Hz系统级高刷、U+Mini LED光晕控制系统、影院级帝瓦雷声学系统五大行业首发科技,为极致影游爱好者打造电视画质的巅峰之作。海信电视E8Q系列提供65/75/85/100/116英寸五个版本,其中E8Q Pro零售指导价为75英寸/13599元、85英寸/17999元、100英寸/27999元;E8Q零售指导价为65英寸/7499元、75
    华尔街科技眼 2025-03-09 20:52 97浏览
  • 近年来,越来越多的企业在5S管理的基础上,开始追求6S、7S甚至8S管理,仿佛S越多,管理就越先进,企业就越优秀。于是,6S增加了“安全”,7S又加上了“节约”,8S甚至引入了“学习”……看似更加全面,实则很多企业只是机械地增加S,却忽略了管理的核心目标:提升效率、降低浪费、优化工作环境。优思学院认为,5S本身已经是一套成熟的精益管理工具,它的核心理念不仅简单高效,而且易于实施和推广。如果企业只是为了赶时髦,盲目增加S,而没有真正理解5S的本质,那么这些额外的“S”很可能会变成管理上的负担,而不
    优思学院 2025-03-07 12:43 267浏览
  • 深圳触觉智能RK3506开发板现已上市,开启预售!搭载瑞芯微RK3506B/J超低功耗工业处理器(1.5GHz三核A7+M0,主频1.5GHz);支持1280×1280显示、双百兆网口、星闪无线三模,板载高达2路CAN FD与5路串口。RK3506适用场景简介工业控制‌:RK3506适用于工业控制、工业通信、人机交互等应用场景。其多核异构架构(3xCortex-A7+Cortex-M0)和外设接口丰富,支持Buildroot、Yocto系统,适合轻量级HMI应用‌。‌工业通信‌:RK3506均支
    Industio_触觉智能 2025-03-07 10:04 159浏览
  • 服务器应用环境与客户需求PCIe 5.0高速接口技术的成熟驱动着生成式AI与高效能运算等相关应用蓬勃发展。在随着企业对服务器性能的要求日益严苛,服务器更新换代的周期也持续加快。在此背景下,白牌与DIY(Do It Yourself)服务器市场迎来了新的发展契机,但同时也面临着更趋复杂的技术挑战。传统上,白牌与DIY服务器以其高度客制化与成本效益优势受到市场青睐。然而,随着PCIe 5.0等高速技术的导入,服务器系统的复杂度大幅提升,对组装技术与组件兼容性也就提出更高的要求。举个简单的例子来说,P
    百佳泰测试实验室 2025-03-06 17:00 181浏览
  • Sub-GHz,即工作频段低于1GHz的无线通信技术,常见频段有315MHz、433MHz、868MHz与915MHz等。其可借助无线电波在自由空间传播的特性,把数据调制到射频载波上进行传输,达成物联网设备间的无线通信,是物联网设备实现高效、稳定、无缝交互的“通信基石”。典型射频信号(无线电波)收发电路简示在工业自动化、智慧城市、智慧农业与智能家居等物联网领域中,LoRa、Wi-SUN、Z-Wave、Sigfox等工业级通信协议大多运行在Sub-GHz频段。而正是通过Sub-GHz射频技术,传感
    华普微HOPERF 2025-03-07 11:39 224浏览
  • 深圳触觉智能SOM3506核心板现已上市,搭载瑞芯微RK3506B/J超低功耗处理器(1.5GHz三核A7+M0),低功耗满载仅0.7W,支持40℃~85℃工作环境,即日起宽温级59元/工业级68元,特价开售!芯片介绍RK3506是瑞芯微Rockchip在2024年第四季度全新推出的Arm嵌入式芯片平台,三核Cortex-A7+单核Cortex-M0多核异构设计,CPU频率达1.5Ghz, M0 MCU为200Mhz。RK3506适用场景简介工业控制‌:RK3506适用于工业控制、工业通信、人机
    Industio_触觉智能 2025-03-07 10:03 190浏览
  • 多人同时共享相同无线网络,以下场景是否是您熟悉的日常?姐姐:「妈~我在房间在线上课,影音一直断断续续的怎么上课啊!」奶奶:「媳妇啊~我在在线追剧,影片一直卡卡的,实在让人生气!」除此之外,同时间有老公在跟客户开在线会议,还有弟弟在玩在线游戏,而妈妈自己其实也在客厅追剧,同时间加总起来,共有五个人同时使用这个网络!我们不论是在家里、咖啡厅、餐厅、商场或是公司,都会面临到周遭充斥着非常多的无线路由器(AP),若同时间每位使用者透过手机、平板或是笔电连接到相同的一个网络,可想而知网络上的壅塞及相互干扰
    百佳泰测试实验室 2025-03-06 16:50 169浏览
  • 在企业管理和职场环境中,权力是一个常被提及却又让人感到微妙的话题。有人觉得它充满吸引力,有人却对它避之不及。然而,不管你对权力的态度如何,理解它、掌握它,甚至善用它,都是职场成功的重要一环。今天,我们就来深入探讨权力的本质,特别是个人权力和社会权力的区别,以及如何在职场中逐步建立属于自己的影响力。权力的两种面貌:你掌控自己,还是掌控他人?说到权力,首先要区分它的两种类型。个人权力是你对自己生活的掌控感。比如,你能自由决定自己的职业方向,不用总是请示他人。这种权力让人感到踏实和满足,是我们在生活中
    优思学院 2025-03-07 15:56 290浏览
  • 文/郭楚妤编辑/cc孙聪颖在这个瞬息万变的时代,流量的到来毫无预兆,不知哪片云会带来降雨。哪怕行事极为低调,也可能在不经意间成为舆论焦点。原本团结、紧张、严肃的全国两会,就因一位来自商界的人大代表周云杰的意外走红,变得活泼起来。周云杰是海尔集团董事局主席、首席执行官,在两会期间以一种意想不到的方式进入大众视野,成为网络热议的焦点人物。故事得从 3 月 5 日讲起。当日,第十四届全国人民代表大会第三次会议首场 “代表通道” 集中采访活动在北京人民大会堂举行。小米公司创始人雷军以全国人大代表的身份亮
    华尔街科技眼 2025-03-08 20:30 110浏览
  • 文/Leon编辑/cc孙聪颖2025年全国两会进行时,作为“十四五”规划收官之年,本届两会释放出坚定目标、稳中求进、以进促稳等信号。其中,企业家们的建议备受关注,关系到民营经济在2025年的走向。作为国内科技制造业的“老兵”,全国人大代表、TCL集团创始人及董事长李东生在本届两会中提出三份代表建议,包括《关于优化中国科技制造业融资环境的建议》、《关于加强AI深度伪造欺诈管理的建议》和《关于降低灵活就业人员社会保险参保门槛的建议》,表现出对科技制造、AI发展和劳动者保障方面的关注。会后,李东生接受
    华尔街科技眼 2025-03-06 19:41 158浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦