forked from TencentOS/TencentOS-tiny
Compare commits
2 Commits
master
...
tos_ai_sig
| Author | SHA1 | Date |
|---|---|---|
|
|
3aad9798d3 | |
|
|
f5a71163bc |
|
|
@ -1,18 +0,0 @@
|
|||
name: Format Docs and Code
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
format:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
# Make sure the actual branch is checked out when running on pull requests
|
||||
ref: ${{ github.head_ref }}
|
||||
ssh-key: ${{ secrets.ACTION_PUSH }}
|
||||
|
||||
- name: Prettify code
|
||||
uses: creyD/prettier_action@v4.3
|
||||
with:
|
||||
prettier_options: --write **/*.{js,ts,css,html,yml,inc,json,md}
|
||||
|
|
@ -24,13 +24,12 @@
|
|||
.DS_Store
|
||||
board/**/build
|
||||
board/**/.settings
|
||||
board/*/KEIL/*/DebugConfig/
|
||||
board/*/MDK-ARM/DebugConfig/
|
||||
board/*/obj/
|
||||
board/*/KEIL/*/Obj/
|
||||
board/*/KEIL/*/RTE/
|
||||
board/*/KEIL/*/*.uvguix.*
|
||||
board/*/KEIL/*/EventRecorderStub.scvd
|
||||
board/*/KEIL/*/*/*.htm
|
||||
board/*/KEIL/*/*/*.build_log.htm
|
||||
board/*/MDK-ARM/Obj/
|
||||
board/*/MDK-ARM/RTE/
|
||||
board/*/MDK-ARM/*.uvguix.*
|
||||
board/*/MDK-ARM/EventRecorderStub.scvd
|
||||
board/*/MDK-ARM/*/*.htm
|
||||
board/*/MDK-ARM/*/*.build_log.htm
|
||||
board/**/settings/*
|
||||
.vscode
|
||||
|
|
|
|||
15
.travis.yml
15
.travis.yml
|
|
@ -3,13 +3,18 @@ language: c
|
|||
os: linux
|
||||
dist: trusty
|
||||
|
||||
|
||||
compiler: arm-none-eabi-gcc
|
||||
|
||||
|
||||
before_install:
|
||||
- sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa -y
|
||||
- sudo apt-get update -q
|
||||
- sudo apt-get install gcc-arm-embedded -y
|
||||
- sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa -y
|
||||
- sudo apt-get update -q
|
||||
- sudo apt-get install gcc-arm-embedded -y
|
||||
|
||||
|
||||
script:
|
||||
- cd board/TencentOS_tiny_EVB_MX_Plus/GCC/hello_world
|
||||
- make
|
||||
- cd board/TencentOS_tiny_EVB_MX_Plus/GCC/hello_world
|
||||
- make
|
||||
|
||||
|
||||
|
|
|
|||
16
ChangeLog.md
16
ChangeLog.md
|
|
@ -1,16 +0,0 @@
|
|||
## [2.5.2] - 2022-06-28
|
||||
|
||||
### Changed
|
||||
|
||||
- modify the global lock to protect the at agent.
|
||||
|
||||
## [2.5.1] - 2022-06-02
|
||||
|
||||
### Added
|
||||
|
||||
- add dynamic create and destroy api for task, sem, mutex, event, timer and corresponding unit test case.
|
||||
- add tos_task_find api.
|
||||
|
||||
### Changed
|
||||
|
||||
- `TOS_CFG_TASK_DYNAMIC_CREATE_EN` change to `TOS_CFG_OBJ_DYNAMIC_CREATE_EN`.
|
||||
207
README.md
207
README.md
|
|
@ -1,213 +1,198 @@
|
|||
# 开放原子开源基金会首批孵化项目
|
||||
|
||||
# 开放原子开源基金会首批孵化项目
|
||||

|
||||
|
||||
[](https://github.com/Tencent/TencentOS-tiny/blob/master/LICENSE)
|
||||
[](https://github.com/Tencent/TencentOS-tiny/pulls)
|
||||
[](https://travis-ci.org/Tencent/TencentOS-tiny)
|
||||
|
||||
[(English Documents Available)](README_en.md)
|
||||
|
||||
# 一、TobudOS 简介
|
||||
# 一、TencentOS Tiny 简介
|
||||
|
||||
[TobudOS ](https://cloud.tencent.com/product/tos-tiny) 是面向物联网领域开发的实时操作系统,早期版本基于腾讯自研的物联网操作系统TencentOS Tiny,2020年由腾讯捐赠到开放原子开源基金会进行孵化,2023年正式更名为TobudOS,TobudOS具有低功耗,低资源占用,模块化,安全可靠等特点,可有效提升物联网终端产品开发效率,提供精简的 RTOS 内核,内核组件可裁剪可配置,可快速移植到多种主流 MCU (如 STM32 全系列) 及模组芯片上。而且,基于 RTOS 内核提供了丰富的物联网组件,内部集成主流物联网协议栈(如 CoAP/MQTT/TLS/DTLS/LoRaWAN/NB-IoT 等),可助力物联网终端设备及业务快速接入物联网云平台。
|
||||
[TencentOS tiny](https://cloud.tencent.com/product/tos-tiny) 是腾讯面向物联网领域开发的实时操作系统,具有低功耗,低资源占用,模块化,安全可靠等特点,可有效提升物联网终端产品开发效率。TencentOS tiny 提供精简的 RTOS 内核,内核组件可裁剪可配置,可快速移植到多种主流 MCU (如 STM32 全系列)及模组芯片上。而且,基于 RTOS 内核提供了丰富的物联网组件,内部集成主流物联网协议栈(如 CoAP/MQTT/TLS/DTLS/LoRaWAN/NB-IoT 等),可助力物联网终端设备及业务快速接入腾讯云物联网平台。
|
||||
|
||||
## 1、TobudOS 整体架构
|
||||
|
||||
## 1、TencentOS tiny整体架构
|
||||
|
||||

|
||||
|
||||
TobudOS主体架构图,从下到上主要包括:
|
||||
TencentOS tiny 主体架构图,从下到上主要包括:
|
||||
|
||||
**CPU 库** :TobudOS支持的 CPU IP 核架构,当前主要支持 ARM Cortex M0/3/4/7,Cortex A7,RISC-V、MSP430、AVR、STM8 等。
|
||||
**CPU 库** :TencentOS tiny 支持的 CPU IP 核架构,当前主要支持 ARM Cortex M0/3/4/7,Cortex A7,RISC-V、MSP430、AVR、STM8 等。
|
||||
|
||||
**驱动管理层** :包括板级支持包(BSP,主要由 MCU 芯片厂家开发与维护)、硬件抽象层(HAL,主要由 TencentOS tiny 提供,方便不同芯片的适配与移植)、设备驱动(Drivers,例如 Wi-Fi、GPRS、LoRa 等模块的驱动程序)。
|
||||
|
||||
**内核** :TobudOS 实时内核包括任务管理、实时调度、时间管理、中断管理、内存管理、异常处理、软件定时器、链表、消息队列、信号量、互斥锁、事件标志等模块。
|
||||
**内核** :TencentOS tiny 实时内核包括任务管理、实时调度、时间管理、中断管理、内存管理、异常处理、软件定时器、链表、消息队列、信号量、互斥锁、事件标志等模块。
|
||||
|
||||
**IoT 协议栈**:TobudOS提供 lwip、AT Adapter、SAL 层,支持不同的网络硬件,例如以太网、串口 Wi-Fi、GPRS、NB-IoT、4G 等通信模块。TCP/IP 网络协议栈上提供常用的物联网协议栈,例如 CoAP、MQTT,支撑终端业务快速接入腾讯云。
|
||||
**IoT 协议栈**:TencentOS tiny 提供 lwip、AT Adapter、SAL 层,支持不同的网络硬件,例如以太网、串口 Wi-Fi、GPRS、NB-IoT、4G 等通信模块。TCP/IP 网络协议栈上提供常用的物联网协议栈,例如 CoAP、MQTT,支撑终端业务快速接入腾讯云。
|
||||
|
||||
**安全框架**:TobudOS为了确保物联网终端数据传输安全以及设备认证安全,提供了完整的安全解决方案。安全框架提供的 DTLS 和 TLS 安全协议,加固了 COAP 及 MQTT 的传输层,可确保物联网终端在对接腾讯云时实现安全认证和数据加密;另外针对低资源的终端硬件,安全框架还提供与腾讯云 IoTHub 配套的密钥认证方案,确保资源受限设备也能在一定程度上实现设备安全认证。
|
||||
**安全框架**:TencentOS tiny 为了确保物联网终端数据传输安全以及设备认证安全,提供了完整的安全解决方案。安全框架提供的 DTLS 和 TLS 安全协议,加固了 COAP 及 MQTT 的传输层,可确保物联网终端在对接腾讯云时实现安全认证和数据加密;另外针对低资源的终端硬件,安全框架还提供与腾讯云 IoTHub 配套的密钥认证方案,确保资源受限设备也能在一定程度上实现设备安全认证。
|
||||
|
||||
**组件框架**:TobudOS 提供文件系统、KV 存储、自组网、JS 引擎、低功耗框架、设备框架、OTA、调试工具链等一系列组件,供用户根据业务场景选用。
|
||||
**组件框架**:TencentOS tiny 提供文件系统、KV 存储、自组网、JS 引擎、低功耗框架、设备框架、OTA、调试工具链等一系列组件,供用户根据业务场景选用。
|
||||
|
||||
**开放 API(规划开发中)**:TobudOS 将在协议中间件和框架层上提供开放 API 函数,方便用户调用中间件功能,使用户无需过多关心中间件具体实现,快速对接腾讯云,实现终端业务上云的需求,期望最大程度减少终端物联网产品开发周期,节省开发成本。
|
||||
**开放 API(规划开发中)**:TencentOS tiny 将在协议中间件和框架层上提供开放 API 函数,方便用户调用中间件功能,使用户无需过多关心中间件具体实现,快速对接腾讯云,实现终端业务上云的需求,期望最大程度减少终端物联网产品开发周期,节省开发成本。
|
||||
|
||||
**示例应用**:TobudOS 提供的示例代码,模块测试代码等,方便用户参考使用。
|
||||
**示例应用**:TencentOS tiny 提供的示例代码,模块测试代码等,方便用户参考使用。
|
||||
|
||||
## 2、TobudOS 优势
|
||||
## 2、TencentOS tiny 优势
|
||||
|
||||
### (1).小体积
|
||||
|
||||
最小内核:RAM 0.6KB,ROM 1.8KB
|
||||
典型 LoraWAN 及传感器应用:RAM 3.3KB,ROM 12KB
|
||||
|
||||
### (2).低功耗
|
||||
|
||||
休眠最低功耗低至 2uA
|
||||
支持外设功耗管理框架
|
||||
|
||||
### (3).丰富的 IoT 组件
|
||||
|
||||
集成主流 IoT 协议栈
|
||||
多种通信模组 SAL 层适配框架;
|
||||
多种通信模组SAL层适配框架;
|
||||
支持 OTA 升级
|
||||
提供简单易用端云 API,加速用户业务接入腾讯云
|
||||
|
||||
### (4).可靠的安全框架
|
||||
|
||||
多样化的安全分级方案
|
||||
均衡安全需求&成本控制
|
||||
|
||||
### (5).良好的可移植性
|
||||
|
||||
内核及 IoT 组件高度解耦,提供标准适配层
|
||||
内核及IoT组件高度解耦,提供标准适配层
|
||||
提供自动化移植工具,提升开发效率
|
||||
|
||||
### (6).便捷的调试手段
|
||||
|
||||
提供云化的最后一屏调试功能
|
||||
故障现场信息自动上传云平台,方便开发人员调试分析
|
||||
|
||||
## 3、TobudOS 携手合作伙伴共建 IoT 生态
|
||||
## 3、TencentOS tiny携手合作伙伴共建IoT生态
|
||||
|
||||

|
||||
|
||||
TobudOS 自开源发布以来也在努力发展合作伙伴,期待合作共赢,共同扩展 IoT 应用生态。目前已经与多家 MCU/IP 核厂家达成了合作,包括意法半导体、恩智浦半导体、兆易半导体、ARM、华大半导体、芯来科技等;也与无线 SOC 和模组厂家达成了广泛的合作关系,包括瑞兴恒方、国民技术、Nordic 蓝牙、亮牛半导体、有人物联网等,
|
||||
TencentOS tiny 自开源发布以来也在努力发展合作伙伴,期待合作共赢,共同扩展 IoT 应用生态。目前已经与多家 MCU/IP 核厂家达成了合作,包括意法半导体、恩智浦半导体、兆易半导体、ARM、华大半导体、芯来科技等;也与无线 SOC 和模组厂家达成了广泛的合作关系,包括瑞兴恒方、国民技术、Nordic 蓝牙、亮牛半导体、有人物联网等,
|
||||
|
||||
除了 MCU 和模组外,TobudOS也积极推进终端产品及项目的落地,目前已经形成了 AI 智慧农业、智能货柜、智慧会议室等方案,并且在腾讯内部与微信支付、腾讯云智慧行业、AI 平台部、腾讯微瓴、QQ family 达成内部合作,共同扩展行业生态;同时也开始积极发展外部客户,目前与深圳光合显示科技的墨水屏零售标签、鑫悦购充电桩等达成业务合作。TobudOS 将携手合作伙伴为物联网终端厂家提供更优质的 IoT 终端软件解决方案,方便各种物联网设备快速接入腾讯云,共同扩展 IoT 生态,更好地支撑智慧城市、智能水表、智能家居、智能穿戴、车联网等多种行业应用。
|
||||
除了MCU和模组外,TencentOS tiny 也积极推进终端产品及项目的落地,目前已经形成了AI智慧农业、智能货柜、智慧会议室等方案,并且在腾讯内部与微信支付、腾讯云智慧行业、 AI 平台部、腾讯微瓴、QQ family 达成内部合作,共同扩展行业生态;同时也开始积极发展外部客户,目前与深圳光合显示科技的墨水屏零售标签、鑫悦购充电桩等达成业务合作。TencentOS tiny 将携手合作伙伴为物联网终端厂家提供更优质的 IoT 终端软件解决方案,方便各种物联网设备快速接入腾讯云,共同扩展 IoT 生态,更好地支撑智慧城市、智能水表、智能家居、智能穿戴、车联网等多种行业应用。
|
||||
|
||||
欢迎 IoT 相关项目合作,有合作需求的请邮件联系 TobudOS 官方工作人员,邮箱地址:supowang@tencent.com
|
||||
欢迎 IoT 相关项目合作,有合作需求的请邮件联系 TencentOS tiny 官方工作人员,邮箱地址 : supowang@tencent.com
|
||||
|
||||
# 二、TobudOS 代码目录
|
||||
|
||||
- [TobudOS 代码目录说明](./doc/09.Code_Directories.md)
|
||||
|
||||
# 三、TobudOS 参考文档
|
||||
# 二、TencentOS tiny 代码目录
|
||||
- [TencentOS tiny 代码目录说明](./doc/09.Code_Directories.md)
|
||||
|
||||
# 三、TencentOS tiny 参考文档
|
||||
## 1、移植指南
|
||||
- [TencentOS tiny 移植指南(KEIL 版本)](./doc/10.Porting_Manual_for_KEIL.md)
|
||||
- [TencentOS tiny 移植指南(IAR 版本)](./doc/11.Porting_Manual_for_IAR.md)
|
||||
- [TencentOS tiny 移植指南(GCC 版本)](./doc/12.Porting_Manual_for_GCC.md)
|
||||
- [TencentOS tiny 移植指南(基于MDK pack)](./tools/mdk_pack/Documentation/README.md)
|
||||
- [TencentOS tiny 移植指南(基于STM32 CubeMx)](./tools/STM32CubeMX_pack/Documentation/README.md)
|
||||
|
||||
- [TobudOS 移植指南(KEIL 版本)](./doc/10.Porting_Manual_for_KEIL.md)
|
||||
- [TobudOS移植指南(IAR 版本)](./doc/11.Porting_Manual_for_IAR.md)
|
||||
- [TobudOS移植指南(GCC 版本)](./doc/12.Porting_Manual_for_GCC.md)
|
||||
- [TobudOS移植指南(基于 MDK pack)](./tools/mdk_pack/Documentation/README.md)
|
||||
- [TobudOS 移植指南(基于 STM32 CubeMx)](./tools/STM32CubeMX_pack/Documentation/README.md)
|
||||
## 2、TencentOS tiny 开发指南
|
||||
- [TencentOS tiny 内核开发指南](./doc/04.Development_Manual.md)
|
||||
- [TencentOS tiny API 参考](./doc/05.SDK_Manual.md)
|
||||
- [TencentOS tiny 对接腾讯云 IoTHub 开发指南](./doc/08.QCloud_IoTHub_Quick_Start.md)
|
||||
|
||||
## 2、TobudOS 开发指南
|
||||
## 3、TencentOS tiny 腾讯云大学视频教程
|
||||
- [TencentOS tiny 端侧开发实践课](https://cloud.tencent.com/edu/paths/series/IoT)
|
||||
|
||||
- [TobudOS 内核开发指南](./doc/04.Development_Manual.md)
|
||||
- [TobudOS API 参考](./doc/05.SDK_Manual.md)
|
||||
- [TobudOS对接腾讯云 IoTHub 开发指南](./doc/08.QCloud_IoTHub_Quick_Start.md)
|
||||
# 四、TencentOS tiny 开源协议
|
||||
* TencentOS tiny 遵循 [BSD-3 开源许可协议](LICENSE)
|
||||
|
||||
## 3、TobudOS 腾讯云大学视频教程
|
||||
|
||||
- [TobudOS 端侧开发实践课](https://cloud.tencent.com/edu/paths/series/IoT)
|
||||
# 五、TencentOS tiny 支持的物联网平台
|
||||
TencentOS tiny 能支持物联网终端设备和业务快速接入[腾讯云物联网平台 IoT Explorer](https://cloud.tencent.com/product/iotexplorer)。
|
||||
|
||||
# 四、TobudOS开源协议
|
||||
TencentOS tiny 结合腾讯云物联网开发平台 IoT Explorer,已经构筑起连接通讯芯片到云开发的能力,加上已经建设完成的国内最大规模 LoRa 网络,腾讯彻底打通从芯片通讯开发、网络支撑服务,物理设备定义管理,数据分析和多场景应用开发等全链条IoT云开发服务能力,重新定义了物联网开发模式,助力亿级设备多方式多模式低门槛接入腾讯云服务。作为物联网基础设施建设服务者,腾讯将持续打造开放的物联网生态体系,促进物联网生态良性发展。
|
||||
|
||||
- TobudOS 遵循 [BSD-3 开源许可协议](LICENSE)
|
||||
|
||||
# 五、TobudOS 支持的物联网平台
|
||||
|
||||
TobudOS能支持物联网终端设备和业务快速接入[腾讯云物联网平台 IoT Explorer](https://cloud.tencent.com/product/iotexplorer)。
|
||||
|
||||
TobudOS 结合腾讯云物联网开发平台 IoT Explorer,已经构筑起连接通讯芯片到云开发的能力,加上已经建设完成的国内最大规模 LoRa 网络,腾讯彻底打通从芯片通讯开发、网络支撑服务,物理设备定义管理,数据分析和多场景应用开发等全链条 IoT 云开发服务能力,重新定义了物联网开发模式,助力亿级设备多方式多模式低门槛接入腾讯云服务。作为物联网基础设施建设服务者,腾讯将持续打造开放的物联网生态体系,促进物联网生态良性发展。
|
||||
|
||||
# 六、TobudOS 快速入门参考
|
||||
|
||||
TobudOS 联合合作伙伴 (南京厚德物联网) 设计了定制开发板,如下图:
|
||||
# 六、TencentOS tiny 快速入门参考
|
||||
TencentOS tiny 联合合作伙伴(南京厚德物联网)设计了定制开发板,如下图:
|
||||

|
||||
|
||||
- [TobudOS 定制开发板介绍页](http://www.holdiot.com/product/showproduct.php?id=8),开发者可以基于定制开发板进行快速入门学习,点击下载参考文档
|
||||
- [TobudOS 定制开发板入门指南](./doc/15.TencentOS_tiny_EVB_MX_Plus_Quick_Start.md)
|
||||
- [TencentOS tiny 定制开发板介绍页](http://www.holdiot.com/product/showproduct.php?id=8),开发者可以基于定制开发板进行快速入门学习,点击下载参考文档
|
||||
- [TencentOS-tiny 定制开发板入门指南](./doc/15.TencentOS_tiny_EVB_MX_Plus_Quick_Start.md)
|
||||
|
||||
# 七、贡献代码
|
||||
* 1. 在您自己的 GitHub 账户下 Fork TencentOS tiny 开源项目;
|
||||
* 2. 根据您的需求在本地 clone 一份 TencentOS tiny 代码;
|
||||
* 3. 您修改或者新增功能后,push 到您 fork 的远程分支;
|
||||
* 4. 创建 pull request,向 TencentOS tiny 官方开发分支提交合入请求;
|
||||
* 5. TencentOS tiny 研发团队会定期 review 代码,通过测试后合入。
|
||||
|
||||
- 1. 在您自己的 GitHub 账户下 Fork TobudOS 开源项目;
|
||||
- 2. 根据您的需求在本地 clone 一份 TobudOS 代码;
|
||||
- 3. 您修改或者新增功能后,push 到您 fork 的远程分支;
|
||||
- 4. 创建 pull request,向 TobudOS官方开发分支提交合入请求;
|
||||
- 5. TobudOS 研发团队会定期 review 代码,通过测试后合入。
|
||||
# 八、加入TencentOS tiny官方QQ技术交流群
|
||||
|
||||
# 八、加入 TobudOS 官方 QQ 技术交流群
|
||||
|
||||
扫码加群,请备注 TobudOS 开发者,工作人员会根据备注进行审核:
|
||||
扫码加群,请备注 TencentOS tiny 开发者,工作人员会根据备注进行审核:
|
||||
|
||||

|
||||
|
||||
# 九、第三方开发者评测
|
||||
|
||||
1.基于 TobudOS 的环境监测实战项目
|
||||
[【TobudOS】环境监测实战项目最终完整版](https://www.bilibili.com/video/av73782956?from=search&seid=4421984671929108231)
|
||||
1.基于 TencentOS tiny 的环境监测实战项目
|
||||
[【TencentOS tiny】环境监测实战项目最终完整版](https://www.bilibili.com/video/av73782956?from=search&seid=4421984671929108231)
|
||||
感谢阿正的贡献
|
||||
|
||||
2.基于野火 stm32f103 开发板上移植的 TobudOS 例程、源码剖析、视频讲解。
|
||||
|
||||
2.基于野火 stm32f103 开发板上移植的 TencentOS tiny 例程、源码剖析、视频讲解。
|
||||
感谢 CSDN 博客专家杰杰的贡献
|
||||
|
||||
## 简单上手:
|
||||
|
||||
- [超详细的 TobudOS 移植到 STM32F103 全教程](https://blog.csdn.net/jiejiemcu/article/details/101034426)
|
||||
- [超详细的 TencentOS tiny 移植到 STM32F103 全教程](https://blog.csdn.net/jiejiemcu/article/details/101034426)
|
||||
|
||||
## 深度源码分析:
|
||||
|
||||
- [【TobudOS 学习】源码分析(1)——task](https://blog.csdn.net/jiejiemcu/article/details/99618912)
|
||||
- [【TencentOS tiny 学习】源码分析(1)——task](https://blog.csdn.net/jiejiemcu/article/details/99618912)
|
||||
|
||||
- [【TobudOS 学习】源码分析(2)——调度器](https://blog.csdn.net/jiejiemcu/article/details/99665883)
|
||||
- [【TencentOS tiny 学习】源码分析(2)——调度器](https://blog.csdn.net/jiejiemcu/article/details/99665883)
|
||||
|
||||
- [【TobudOS 学习】源码分析(3)——队列](https://blog.csdn.net/jiejiemcu/article/details/99687678)
|
||||
- [【TencentOS tiny 学习】源码分析(3)——队列](https://blog.csdn.net/jiejiemcu/article/details/99687678)
|
||||
|
||||
- [【TobudOS 学习】源码分析(4)——消息队列](https://blog.csdn.net/jiejiemcu/article/details/99781093)
|
||||
- [【TencentOS tiny 学习】源码分析(4)——消息队列](https://blog.csdn.net/jiejiemcu/article/details/99781093)
|
||||
|
||||
- [【TobudOS 学习】源码分析(5)——信号量](https://blog.csdn.net/jiejiemcu/article/details/100052643)
|
||||
- [【TencentOS tiny 学习】源码分析(5)——信号量](https://blog.csdn.net/jiejiemcu/article/details/100052643)
|
||||
|
||||
- [【TobudOS 学习】源码分析(6)——互斥锁](https://blog.csdn.net/jiejiemcu/article/details/100056641)
|
||||
- [【TencentOS tiny 学习】源码分析(6)——互斥锁](https://blog.csdn.net/jiejiemcu/article/details/100056641)
|
||||
|
||||
- [【TobudOS学习】源码分析(7)——事件](https://blog.csdn.net/jiejiemcu/article/details/100492219)
|
||||
- [【TencentOS tiny 学习】源码分析(7)——事件](https://blog.csdn.net/jiejiemcu/article/details/100492219)
|
||||
|
||||
- [【TobudOS 学习】源码分析(8)——软件定时器](https://blog.csdn.net/jiejiemcu/article/details/101846089)
|
||||
- [【TencentOS tiny 学习】源码分析(8)——软件定时器](https://blog.csdn.net/jiejiemcu/article/details/101846089)
|
||||
|
||||
## 配套例程:
|
||||
|
||||
- [【TobudOS学习】例程(0)——hello world](https://github.com/jiejieTop/TencentOS-Demo/tree/master/hello-world)
|
||||
- [【TencentOS tiny 学习】例程(0)——hello world](https://github.com/jiejieTop/TencentOS-Demo/tree/master/hello-world)
|
||||
|
||||
- [【TobudOS 学习】例程(1)——task](https://github.com/jiejieTop/TencentOS-Demo/tree/master/01-task)
|
||||
- [【TencentOS tiny 学习】例程(1)——task](https://github.com/jiejieTop/TencentOS-Demo/tree/master/01-task)
|
||||
|
||||
- [【TobudOS 学习】例程(2)——队列](https://github.com/jiejieTop/TencentOS-Demo/tree/master/02-queue)
|
||||
- [【TencentOS tiny 学习】例程(2)——队列](https://github.com/jiejieTop/TencentOS-Demo/tree/master/02-queue)
|
||||
|
||||
- [【TobudOS 学习】例程(3)——消息队列](https://github.com/jiejieTop/TencentOS-Demo/tree/master/03-msg_queue)
|
||||
- [【TencentOS tiny 学习】例程(3)——消息队列](https://github.com/jiejieTop/TencentOS-Demo/tree/master/03-msg_queue)
|
||||
|
||||
- [【TobudOS学习】例程(4)——信号量](https://github.com/jiejieTop/TencentOS-Demo/tree/master/04-sem)
|
||||
- [【TencentOS tiny 学习】例程(4)——信号量](https://github.com/jiejieTop/TencentOS-Demo/tree/master/04-sem)
|
||||
|
||||
- [【TobudOS学习】例程(5)——互斥锁](https://github.com/jiejieTop/TencentOS-Demo/tree/master/05-mutex)
|
||||
- [【TencentOS tiny 学习】例程(5)——互斥锁](https://github.com/jiejieTop/TencentOS-Demo/tree/master/05-mutex)
|
||||
|
||||
- [【TobudOS学习】例程(6)——事件](https://github.com/jiejieTop/TencentOS-Demo/tree/master/06-event)
|
||||
- [【TencentOS tiny 学习】例程(6)——事件](https://github.com/jiejieTop/TencentOS-Demo/tree/master/06-event)
|
||||
|
||||
- [【TobudOS学习】例程(7)——软件定时器](https://github.com/jiejieTop/TencentOS-Demo/tree/master/07-timer)
|
||||
- [【TencentOS tiny 学习】例程(7)——软件定时器](https://github.com/jiejieTop/TencentOS-Demo/tree/master/07-timer)
|
||||
|
||||
- [【TobudOS学习】例程(8)——内存池](https://github.com/jiejieTop/TencentOS-Demo/tree/master/08-mmblk)
|
||||
- [【TencentOS tiny 学习】例程(8)——内存池](https://github.com/jiejieTop/TencentOS-Demo/tree/master/08-mmblk)
|
||||
|
||||
- [【TencentOS tiny 学习】例程(9)——内存堆](https://github.com/jiejieTop/TencentOS-Demo/tree/master/09-mmheap)
|
||||
|
||||
- [【TobudOS学习】例程(9)——内存堆](https://github.com/jiejieTop/TencentOS-Demo/tree/master/09-mmheap)
|
||||
|
||||
## 视频教程:
|
||||
|
||||
- [【TobudOS学习】视频汇总](https://www.bilibili.com/video/av70478596?from=search&seid=10160676184801585522)
|
||||
- [【视频】01-初识 TobudOS](https://www.bilibili.com/video/av70478596/?p=1)
|
||||
- [【视频】02-TobudOS 基础知识](https://www.bilibili.com/video/av70478596/?p=2)
|
||||
- [【视频】03-TobudOS 移植](https://www.bilibili.com/video/av70478596/?p=3)
|
||||
- [【视频】04-TobudOS 任务 -1](https://www.bilibili.com/video/av70478596/?p=4)
|
||||
- [【视频】05-TobudOS 任务 -2](https://www.bilibili.com/video/av70478596/?p=5)
|
||||
- [【视频】06-TobudOS 队列 -1](https://www.bilibili.com/video/av70478596/?p=6)
|
||||
- [【视频】07-TobudOS 队列 -2](https://www.bilibili.com/video/av70478596/?p=7)
|
||||
- [【视频】08-TobudOS 消息队列](https://www.bilibili.com/video/av70478596/?p=8)
|
||||
- [【视频】09-TobudOS 信号量 -1](https://www.bilibili.com/video/av70478596/?p=9)
|
||||
- [【视频】10-TobudOS 信号量 -2](https://www.bilibili.com/video/av70478596/?p=10)
|
||||
- [【视频】11-TobudOS互斥锁 -1](https://www.bilibili.com/video/av70478596/?p=11)
|
||||
- [【视频】12-TobudOS 互斥锁 -2](https://www.bilibili.com/video/av70478596/?p=12)
|
||||
- [【视频】13-TobudOS 互斥锁 -3](https://www.bilibili.com/video/av70478596/?p=13)
|
||||
- [【视频】14-TobudOS 事件 -1](https://www.bilibili.com/video/av70478596/?p=14)
|
||||
- [【视频】15-TobudOS 事件 -2](https://www.bilibili.com/video/av70478596/?p=15)
|
||||
- [【视频】16-TobudOS 软件定时器 -1](https://www.bilibili.com/video/av70478596/?p=16)
|
||||
- [【视频】17-TobudOS 软件定时器 -2](https://www.bilibili.com/video/av70478596/?p=11)
|
||||
- [【视频】18-TobudOS 软件定时器 -3](https://www.bilibili.com/video/av70478596/?p=18)
|
||||
- [【TencentOS tiny 学习】视频汇总](https://www.bilibili.com/video/av70478596?from=search&seid=10160676184801585522)
|
||||
- [【视频】01-初识 TencentOS tiny](https://www.bilibili.com/video/av70478596/?p=1)
|
||||
- [【视频】02-TencentOS tiny 基础知识](https://www.bilibili.com/video/av70478596/?p=2)
|
||||
- [【视频】03-TencentOS tiny 移植](https://www.bilibili.com/video/av70478596/?p=3)
|
||||
- [【视频】04-TencentOS tiny 任务-1](https://www.bilibili.com/video/av70478596/?p=4)
|
||||
- [【视频】05-TencentOS tiny 任务-2](https://www.bilibili.com/video/av70478596/?p=5)
|
||||
- [【视频】06-TencentOS tiny 队列-1](https://www.bilibili.com/video/av70478596/?p=6)
|
||||
- [【视频】07-TencentOS tiny 队列-2](https://www.bilibili.com/video/av70478596/?p=7)
|
||||
- [【视频】08-TencentOS tiny 消息队列](https://www.bilibili.com/video/av70478596/?p=8)
|
||||
- [【视频】09-TencentOS tiny 信号量-1](https://www.bilibili.com/video/av70478596/?p=9)
|
||||
- [【视频】10-TencentOS tiny 信号量-2](https://www.bilibili.com/video/av70478596/?p=10)
|
||||
- [【视频】11-TencentOS tiny 互斥锁-1](https://www.bilibili.com/video/av70478596/?p=11)
|
||||
- [【视频】12-TencentOS tiny 互斥锁-2](https://www.bilibili.com/video/av70478596/?p=12)
|
||||
- [【视频】13-TencentOS tiny 互斥锁-3](https://www.bilibili.com/video/av70478596/?p=13)
|
||||
- [【视频】14-TencentOS tiny 事件-1](https://www.bilibili.com/video/av70478596/?p=14)
|
||||
- [【视频】15-TencentOS tiny 事件-2](https://www.bilibili.com/video/av70478596/?p=15)
|
||||
- [【视频】16-TencentOS tiny 软件定时器-1](https://www.bilibili.com/video/av70478596/?p=16)
|
||||
- [【视频】17-TencentOS tiny 软件定时器-2](https://www.bilibili.com/video/av70478596/?p=11)
|
||||
- [【视频】18-TencentOS tiny 软件定时器-3](https://www.bilibili.com/video/av70478596/?p=18)
|
||||
|
||||
## 相关 PPT 资料:
|
||||
## 相关PPT资料:
|
||||
- [【TencentOS tiny 学习】视频 PPT](https://github.com/jiejieTop/TencentOS-Demo/tree/master/PPT)
|
||||
|
||||
- [【TobudOS 学习】视频 PPT](https://github.com/jiejieTop/TencentOS-Demo/tree/master/PPT)
|
||||
|
|
|
|||
50
README_en.md
50
README_en.md
|
|
@ -1,7 +1,9 @@
|
|||
|
||||

|
||||
|
||||
[](https://github.com/Tencent/TencentOS-tiny/blob/master/LICENSE)
|
||||
[](https://github.com/Tencent/TencentOS-tiny/pulls)
|
||||
[](https://travis-ci.org/Tencent/TencentOS-tiny)
|
||||
|
||||
[(中文)](README.md)
|
||||
|
||||
|
|
@ -9,7 +11,8 @@
|
|||
|
||||
[TencentOS tiny](https://cloud.tencent.com/product/tos-tiny) is a real-time operating system developed by Tencent for the Internet of Things. It features low power consumption, low resource consumption, modularity, security and reliability, and can effectively improve the development efficiency of IoT terminal products. TencentOS tiny provides a streamlined RTOS core that can be tailored and configurable for rapid migration to a wide range of mainstream MCUs (such as the full range of STM32) and module chips. Moreover, based on the RTOS kernel, it provides a wealth of IoT components, and internally integrates mainstream IoT protocol stacks (such as CoAP/MQTT/TLS/DTLS/LoRaWAN/NB-IoT, etc.), which can help IoT terminals and services to quickly access Tencent. Cloud Internet of Things platform.
|
||||
|
||||
## 1, The software architecture of TencentOS tiny
|
||||
|
||||
## 1、The software architecture of TencentOS tiny
|
||||
|
||||

|
||||
|
||||
|
|
@ -31,7 +34,7 @@ TencentOS tiny main architecture diagram, from bottom to top, mainly includes:
|
|||
|
||||
**examples**:TencentOS tiny provides sample code, module test code, etc., which is convenient for users to refer to.
|
||||
|
||||
## 2, Key features of TencentOS tiny
|
||||
## 2、Key features of TencentOS tiny
|
||||
|
||||
### (1).Small size
|
||||
|
||||
|
|
@ -57,7 +60,7 @@ Provides easy-to-use end-cloud API to accelerate user service access to Tencent
|
|||
|
||||
### (4).Reliable security framework
|
||||
|
||||
Diversified security grading scheme;
|
||||
Diversified security grading scheme;
|
||||
|
||||
Balanced security requirements & cost control.
|
||||
|
||||
|
|
@ -68,47 +71,40 @@ Highly decoupled core and IoT components, providing a standard adaptation layer;
|
|||
Provide automated migration tools to improve development efficiency.
|
||||
|
||||
### (6).Convenient debugging means
|
||||
|
||||
Provide cloudized last screen debugging;
|
||||
|
||||
The fault scene information is automatically uploaded to the cloud platform, which is convenient for developers to debug and analyze.
|
||||
|
||||
## 3, TencentOS tiny and partners are committed to building the IoT ecosystem
|
||||
## 3、TencentOS tiny and partners are committed to building the IoT ecosystem
|
||||
|
||||

|
||||
|
||||
TencentOS tiny currently supports mainstream MCUs such as STM32, NXP, Huada Semiconductor, National Technology, GD32, Nordic, and TI. Two sets of official custom development board designs have been completed, supporting the full range of STM32 NUCLEO official evaluation board kernel migration. In addition to MCU and modules, TencentOS tiny is also actively promoting the implementation of terminal products and projects. Currently, solutions such as AI smart agriculture, smart containers, and smart conference rooms have been formed, and internal cooperation has been established with WeChat Pay, Tencent Cloud Smart Industry, AI Platform Department, Tencent Weiling, and QQ family within Tencent to jointly expand the industry ecosystem; At the same time, we have also begun to actively develop external customers, and currently have reached business cooperation with Shenzhen Guanghe Display Technology's ink screen retail labels, Xinyuegou charging piles, and others.TencentOS tiny will work together with partners to provide better IoT terminal software solutions for IoT terminal manufacturers, facilitating the rapid access of various IoT devices to Tencent Cloud, and jointly expanding the IoT ecosystem to better support smart cities, smart water meters, and smart homes. , smart wear, car networking and other industrial applications.
|
||||
TencentOS tiny currently supports mainstream MCUs such as STM32, NXP, Huada Semiconductor, National Technology, GD32, Nordic, and TI. Two sets of official custom development board designs have been completed, supporting the full range of STM32 NUCLEO official evaluation board kernel migration. TencentOS tiny will work together with partners to provide better IoT terminal software solutions for IoT terminal manufacturers, facilitating the rapid access of various IoT devices to Tencent Cloud, and jointly expanding the IoT ecosystem to better support smart cities, smart water meters, and smart homes. , smart wear, car networking and other industrial applications.
|
||||
|
||||
# TencentOS tiny code directory
|
||||
|
||||
- [TencentOS tiny code directory description](./doc/09.Code_Directories.md)
|
||||
|
||||
# TencentOS tiny reference documentation
|
||||
## 1、Porting guide
|
||||
- [TencentOS tiny Porting guide(KEIL version)](./doc/10.Porting_Manual_for_KEIL.md)
|
||||
- [TencentOS tiny Porting guide(IAR version)](./doc/11.Porting_Manual_for_IAR.md)
|
||||
- [TencentOS tiny Porting guide(GCC version)](./doc/12.Porting_Manual_for_GCC.md)
|
||||
|
||||
## 1, Porting guide
|
||||
|
||||
- [TencentOS tiny Porting guide (KEIL version)](./doc/10.Porting_Manual_for_KEIL.md)
|
||||
- [TencentOS tiny Porting guide (IAR version)](./doc/11.Porting_Manual_for_IAR.md)
|
||||
- [TencentOS tiny Porting guide (GCC version)](./doc/12.Porting_Manual_for_GCC.md)
|
||||
|
||||
## 2, Development guide
|
||||
|
||||
## 2、Development guide
|
||||
- [TencentOS tiny Kernel development guide](./doc/04.Development_Manual.md)
|
||||
- [TencentOS tiny API reference](./doc/05.SDK_Manual.md)
|
||||
- [The development Guide for use TencentOS tiny connect to Tencent Cloud IoTHub ](./doc/08.QCloud_IoTHub_Quick_Start.md)
|
||||
- [The development Guide for use TencentOS tiny connect to Tencent Cloud IoTHub ](./doc/08.QCloud_IoTHub_Quick_Start.md)
|
||||
|
||||
# TencentOS tiny opensource license
|
||||
* TencentOS tiny follow [BSD-3 Open source license agreement](LICENSE)
|
||||
|
||||
- TencentOS tiny follow [BSD-3 Open source license agreement](LICENSE)
|
||||
|
||||
# The IoT platform TencentOS tiny support
|
||||
|
||||
# The IoT platform TencentOS tiny support
|
||||
TencentOS tiny can support IoT terminal devices and services for fast access to Tencent Cloud IoT Platform [IoT Explorer](https://cloud.tencent.com/product/iotexplorer)。
|
||||
|
||||
TencentOS tiny combines Tencent Cloud IoT development platform IoT Explorer, which has built up the ability to connect communication chips to cloud development. Together with the largest LoRa network in China, Tencent has completely opened up from chip communication development, network support services, and physical equipment. Defining management, data analysis and multi-scenario application development and other full-chain IoT cloud development service capabilities, redefining the IoT development model, helping multi-mode low threshold access to Tencent cloud services. As an IoT infrastructure construction service provider, Tencent will continue to build an open IoT ecosystem and promote the sound development of the Internet of Things.
|
||||
|
||||
# TencentOS tiny Quick Start Reference
|
||||
|
||||
TencentOS tiny joint partner (Nanjing Houde IoT) designed a custom development board, as shown below:
|
||||

|
||||
|
||||
|
|
@ -116,15 +112,17 @@ TencentOS tiny joint partner (Nanjing Houde IoT) designed a custom development b
|
|||
- [TencentOS-tiny Custom Development Board Getting Started Guide](./doc/15.TencentOS_tiny_EVB_MX_Plus_Quick_Start.md)
|
||||
|
||||
# Contributing
|
||||
|
||||
- 1. Fork TencentOS tiny open source project under your own GitHub account;
|
||||
- 2. Clone a TencentOS tiny code locally according to your needs;
|
||||
- 3. After you modify or add a new function, push to the remote branch of your fork;
|
||||
- 4. Create a pull request and submit a join request to the official TencentOS tiny development branch;
|
||||
- 5. The TencentOS tiny R&D team will periodically review the code and merge your pull request.
|
||||
* 1. Fork TencentOS tiny open source project under your own GitHub account;
|
||||
* 2. Clone a TencentOS tiny code locally according to your needs;
|
||||
* 3. After you modify or add a new function, push to the remote branch of your fork;
|
||||
* 4. Create a pull request and submit a join request to the official TencentOS tiny development branch;
|
||||
* 5. The TencentOS tiny R&D team will periodically review the code and merge your pull request.
|
||||
|
||||
# Join the TencentOS tiny official QQ technology exchange group
|
||||
|
||||
Scan the QR code to join the qq group, please note the TencentOS tiny developer, the TencentOS tiny staff will review according to the notes:
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -143,8 +143,8 @@ restore_context:
|
|||
|
||||
/* just switch at Software interrupt */
|
||||
.align 2
|
||||
.global SW_Handler
|
||||
SW_Handler:
|
||||
.global SW_handler
|
||||
SW_handler:
|
||||
#if ARCH_RISCV_FPU
|
||||
addi sp, sp, -128
|
||||
fsw f0, __reg_f0_OFFSET(sp)
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -14,19 +14,17 @@ LPUART1.WordLength=UART_WORDLENGTH_8B
|
|||
Mcu.Family=STM32L4
|
||||
Mcu.IP0=ADC1
|
||||
Mcu.IP1=I2C1
|
||||
Mcu.IP10=SYS
|
||||
Mcu.IP11=USART1
|
||||
Mcu.IP12=USART2
|
||||
Mcu.IP13=USART3
|
||||
Mcu.IP10=USART2
|
||||
Mcu.IP11=USART3
|
||||
Mcu.IP2=LPUART1
|
||||
Mcu.IP3=NVIC
|
||||
Mcu.IP4=QUADSPI
|
||||
Mcu.IP5=RCC
|
||||
Mcu.IP6=SDMMC1
|
||||
Mcu.IP7=SPI1
|
||||
Mcu.IP8=SPI2
|
||||
Mcu.IP9=SPI3
|
||||
Mcu.IPNb=14
|
||||
Mcu.IP4=RCC
|
||||
Mcu.IP5=SPI1
|
||||
Mcu.IP6=SPI2
|
||||
Mcu.IP7=SPI3
|
||||
Mcu.IP8=SYS
|
||||
Mcu.IP9=USART1
|
||||
Mcu.IPNb=12
|
||||
Mcu.Name=STM32L431R(B-C)Tx
|
||||
Mcu.Package=LQFP64
|
||||
Mcu.Pin0=PC13
|
||||
|
|
@ -37,38 +35,31 @@ Mcu.Pin12=PA4
|
|||
Mcu.Pin13=PA6
|
||||
Mcu.Pin14=PC4
|
||||
Mcu.Pin15=PC5
|
||||
Mcu.Pin16=PB0
|
||||
Mcu.Pin17=PB1
|
||||
Mcu.Pin18=PB2
|
||||
Mcu.Pin19=PB10
|
||||
Mcu.Pin16=PB2
|
||||
Mcu.Pin17=PB13
|
||||
Mcu.Pin18=PB15
|
||||
Mcu.Pin19=PC6
|
||||
Mcu.Pin2=PC15-OSC32_OUT (PC15)
|
||||
Mcu.Pin20=PB11
|
||||
Mcu.Pin21=PB13
|
||||
Mcu.Pin22=PB15
|
||||
Mcu.Pin23=PC6
|
||||
Mcu.Pin24=PC7
|
||||
Mcu.Pin25=PC8
|
||||
Mcu.Pin26=PA9
|
||||
Mcu.Pin27=PA10
|
||||
Mcu.Pin28=PA12
|
||||
Mcu.Pin29=PA15 (JTDI)
|
||||
Mcu.Pin20=PC7
|
||||
Mcu.Pin21=PA9
|
||||
Mcu.Pin22=PA10
|
||||
Mcu.Pin23=PA12
|
||||
Mcu.Pin24=PA15 (JTDI)
|
||||
Mcu.Pin25=PC10
|
||||
Mcu.Pin26=PC11
|
||||
Mcu.Pin27=PB3 (JTDO-TRACESWO)
|
||||
Mcu.Pin28=PB5
|
||||
Mcu.Pin29=PB6
|
||||
Mcu.Pin3=PH0-OSC_IN (PH0)
|
||||
Mcu.Pin30=PC10
|
||||
Mcu.Pin31=PC11
|
||||
Mcu.Pin32=PC12
|
||||
Mcu.Pin33=PD2
|
||||
Mcu.Pin34=PB3 (JTDO-TRACESWO)
|
||||
Mcu.Pin35=PB5
|
||||
Mcu.Pin36=PB6
|
||||
Mcu.Pin37=PB7
|
||||
Mcu.Pin38=VP_SYS_VS_Systick
|
||||
Mcu.Pin30=PB7
|
||||
Mcu.Pin31=VP_SYS_VS_Systick
|
||||
Mcu.Pin4=PH1-OSC_OUT (PH1)
|
||||
Mcu.Pin5=PC0
|
||||
Mcu.Pin6=PC1
|
||||
Mcu.Pin7=PC2
|
||||
Mcu.Pin8=PC3
|
||||
Mcu.Pin9=PA1
|
||||
Mcu.PinsNb=39
|
||||
Mcu.PinsNb=32
|
||||
Mcu.ThirdPartyNb=0
|
||||
Mcu.UserConstants=
|
||||
Mcu.UserName=STM32L431RCTx
|
||||
|
|
@ -77,7 +68,6 @@ MxDb.Version=DB.5.0.30
|
|||
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
|
||||
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
|
||||
NVIC.EXTI2_IRQn=true\:0\:0\:false\:false\:true\:true\:true
|
||||
NVIC.ForceEnableDMAVector=true
|
||||
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
|
||||
NVIC.LPUART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true
|
||||
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false
|
||||
|
|
@ -111,14 +101,6 @@ PA6.Mode=Full_Duplex_Master
|
|||
PA6.Signal=SPI1_MISO
|
||||
PA9.Mode=Asynchronous
|
||||
PA9.Signal=USART1_TX
|
||||
PB0.Mode=Single Bank 1 2IOs
|
||||
PB0.Signal=QUADSPI_BK1_IO1
|
||||
PB1.Mode=Single Bank 1 2IOs
|
||||
PB1.Signal=QUADSPI_BK1_IO0
|
||||
PB10.Mode=Single Bank 1 2IOs
|
||||
PB10.Signal=QUADSPI_CLK
|
||||
PB11.Mode=Single Bank 1 2IOs
|
||||
PB11.Signal=QUADSPI_BK1_NCS
|
||||
PB13.Locked=true
|
||||
PB13.Mode=TX_Only_Simplex_Unidirect_Master
|
||||
PB13.Signal=SPI2_SCK
|
||||
|
|
@ -151,8 +133,6 @@ PC10.Mode=Full_Duplex_Master
|
|||
PC10.Signal=SPI3_SCK
|
||||
PC11.Mode=Full_Duplex_Master
|
||||
PC11.Signal=SPI3_MISO
|
||||
PC12.Mode=SD_1_bit
|
||||
PC12.Signal=SDMMC1_CK
|
||||
PC13.GPIOParameters=GPIO_Label
|
||||
PC13.GPIO_Label=LED
|
||||
PC13.Locked=true
|
||||
|
|
@ -178,10 +158,14 @@ PC7.GPIOParameters=GPIO_Label
|
|||
PC7.GPIO_Label=LCD_RST
|
||||
PC7.Locked=true
|
||||
PC7.Signal=GPIO_Output
|
||||
PC8.Mode=SD_1_bit
|
||||
PC8.Signal=SDMMC1_D0
|
||||
PD2.Mode=SD_1_bit
|
||||
PD2.Signal=SDMMC1_CMD
|
||||
PCC.Checker=true
|
||||
PCC.Line=STM32L4x1
|
||||
PCC.MCU=STM32L431R(B-C)Tx
|
||||
PCC.PartNumber=STM32L431RCTx
|
||||
PCC.Seq0=0
|
||||
PCC.Series=STM32L4
|
||||
PCC.Temperature=25
|
||||
PCC.Vdd=3.0
|
||||
PH0-OSC_IN\ (PH0).Mode=HSE-External-Oscillator
|
||||
PH0-OSC_IN\ (PH0).Signal=RCC_OSC_IN
|
||||
PH1-OSC_OUT\ (PH1).Mode=HSE-External-Oscillator
|
||||
|
|
@ -209,18 +193,11 @@ ProjectManager.PreviousToolchain=
|
|||
ProjectManager.ProjectBuild=false
|
||||
ProjectManager.ProjectFileName=BearPi_STM32L31RC.ioc
|
||||
ProjectManager.ProjectName=BearPi_STM32L31RC
|
||||
ProjectManager.RegisterCallBack=
|
||||
ProjectManager.StackSize=0x400
|
||||
ProjectManager.TargetToolchain=MDK-ARM V5
|
||||
ProjectManager.ToolChainLocation=
|
||||
ProjectManager.UnderRoot=false
|
||||
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_ADC1_Init-ADC1-false-HAL-true,4-MX_I2C1_Init-I2C1-false-HAL-true,5-MX_LPUART1_UART_Init-LPUART1-false-HAL-true,6-MX_USART2_UART_Init-USART2-false-HAL-true,7-MX_USART3_UART_Init-USART3-false-HAL-true,8-MX_SPI1_Init-SPI1-false-HAL-true,9-MX_SPI3_Init-SPI3-false-HAL-true,10-MX_SPI2_Init-SPI2-false-HAL-true,11-MX_USART1_UART_Init-USART1-false-HAL-true,12-MX_SDMMC1_SD_Init-SDMMC1-false-HAL-true,13-MX_QUADSPI_Init-QUADSPI-false-HAL-true
|
||||
QUADSPI.ChipSelectHighTime=QSPI_CS_HIGH_TIME_4_CYCLE
|
||||
QUADSPI.ClockPrescaler=0
|
||||
QUADSPI.FifoThreshold=4
|
||||
QUADSPI.FlashSize=22
|
||||
QUADSPI.IPParameters=ClockPrescaler,FifoThreshold,SampleShifting,FlashSize,ChipSelectHighTime
|
||||
QUADSPI.SampleShifting=QSPI_SAMPLE_SHIFTING_HALFCYCLE
|
||||
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_ADC1_Init-ADC1-false-HAL-true,4-MX_I2C1_Init-I2C1-false-HAL-true,5-MX_LPUART1_UART_Init-LPUART1-false-HAL-true,6-MX_USART2_UART_Init-USART2-false-HAL-true,7-MX_USART3_UART_Init-USART3-false-HAL-true,8-MX_SPI1_Init-SPI1-false-HAL-true,9-MX_SPI3_Init-SPI3-false-HAL-true,10-MX_SPI2_Init-SPI2-false-HAL-true
|
||||
RCC.ADCFreq_Value=32000000
|
||||
RCC.AHBFreq_Value=80000000
|
||||
RCC.APB1Freq_Value=80000000
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ E53_IA1_Data_TypeDef E53_IA1_Data;
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: Init_BH1750
|
||||
* 说 明: 写命令初始化 BH1750
|
||||
* 说 明: 写命令初始化BH1750
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -21,7 +21,7 @@ void Init_BH1750(void)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: Start_BH1750
|
||||
* 说 明: 启动 BH1750
|
||||
* 说 明: 启动BH1750
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -53,7 +53,7 @@ float Convert_BH1750(void)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: SHT30_reset
|
||||
* 说 明: SHT30 复位
|
||||
* 说 明: SHT30复位
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -67,7 +67,7 @@ void SHT30_reset(void)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: Init_SHT30
|
||||
* 说 明: 初始化 SHT30,设置测量周期
|
||||
* 说 明: 初始化SHT30,设置测量周期
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -151,7 +151,7 @@ float SHT3x_CalcRH(unsigned short u16sRH)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: Init_Motor
|
||||
* 说 明: 初始化 Init_E53_IA1 的马达
|
||||
* 说 明: 初始化Init_E53_IA1的马达
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -204,7 +204,7 @@ void light_control(char mode){
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: Init_Light
|
||||
* 说 明: 初始化 Init_E53_IA1 的补光灯
|
||||
* 说 明: 初始化Init_E53_IA1的补光灯
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -227,7 +227,7 @@ void Init_Light(void)
|
|||
}
|
||||
/***************************************************************
|
||||
* 函数名称: Init_E53_IA1
|
||||
* 说 明: 初始化 Init_E53_IA1
|
||||
* 说 明: 初始化Init_E53_IA1
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ TIM_HandleTypeDef htim16;
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: MX_TIM16_Init
|
||||
* 说 明: 初始化定时器 16
|
||||
* 说 明: 初始化定时器16
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -65,7 +65,7 @@ void MX_TIM16_Init(void)
|
|||
}
|
||||
/***************************************************************
|
||||
* 函数名称: HAL_TIM_Base_MspInit
|
||||
* 说 明: 使能定时器 16 时钟,设置时钟源
|
||||
* 说 明: 使能定时器16时钟,设置时钟源
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -87,7 +87,7 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: HAL_TIM_MspPostInit
|
||||
* 说 明: 使能定时器 16 硬件初始化
|
||||
* 说 明: 使能定时器16硬件初始化
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -120,7 +120,7 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: MX_ADC1_Init
|
||||
* 说 明: 初始化 ADC1 电压采集通道
|
||||
* 说 明: 初始化ADC1电压采集通道
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -168,7 +168,7 @@ void MX_ADC1_Init(void)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: HAL_ADC_MspInit
|
||||
* 说 明: 使能 ADC 时钟,设置时钟源
|
||||
* 说 明: 使能ADC时钟,设置时钟源
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -200,7 +200,7 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: Init_Beep
|
||||
* 说 明: 初始化 E53_SF1 的蜂鸣器
|
||||
* 说 明: 初始化E53_SF1的蜂鸣器
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -224,7 +224,7 @@ void Init_Beep(void)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: Init_LED
|
||||
* 说 明: 初始化 E53_SF1 的 LED 灯
|
||||
* 说 明: 初始化E53_SF1的LED灯
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -247,7 +247,7 @@ void Init_LED(void)
|
|||
}
|
||||
/***************************************************************
|
||||
* 函数名称: Init_E53_SF1
|
||||
* 说 明: 初始化 E53_SF1 扩展板
|
||||
* 说 明: 初始化E53_SF1扩展板
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -272,10 +272,10 @@ void E53_SF1_Read_Data(void)
|
|||
}
|
||||
/***************************************************************
|
||||
* 函数名称: E53SF1_LED_StatusSet
|
||||
* 说 明: E53SF1 开发板上的 LED 灯的亮灭控制
|
||||
* 参 数: status,LED 灯的状态
|
||||
* 非 1,关灯
|
||||
* 1,开灯
|
||||
* 说 明: E53SF1开发板上的LED灯的亮灭控制
|
||||
* 参 数: status,LED灯的状态
|
||||
* 非1,关灯
|
||||
* 1,开灯
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
void E53SF1_LED_StatusSet(E53SF1_Status_ENUM status)
|
||||
|
|
@ -285,10 +285,10 @@ void E53SF1_LED_StatusSet(E53SF1_Status_ENUM status)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: E53SF1_BEEP
|
||||
* 说 明: E53SF1 蜂鸣器报警与否
|
||||
* 参 数: status,LED_ENUM 枚举的数据
|
||||
* LED_OFF,关灯
|
||||
* LED_ON,开灯
|
||||
* 说 明: E53SF1蜂鸣器报警与否
|
||||
* 参 数: status,LED_ENUM枚举的数据
|
||||
* LED_OFF,关灯
|
||||
* LED_ON,开灯
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
void E53SF1_Beep(E53SF1_Status_ENUM status)
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ extern E53_SF1_Data_TypeDef E53_SF1_Data;
|
|||
|
||||
/***************************************************************
|
||||
* 名 称: GasStatus_ENUM
|
||||
* 说 明: 枚举状态结构体
|
||||
* 说 明:枚举状态结构体
|
||||
***************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
/***************************************************************
|
||||
* 名 称: GasStatus_ENUM
|
||||
* 说 明: 枚举状态结构体
|
||||
* 说 明:枚举状态结构体
|
||||
***************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
|
|
@ -31,10 +31,10 @@ typedef enum
|
|||
\***************************************************/
|
||||
__packed typedef struct
|
||||
{
|
||||
uint32_t latitude_bd; //纬度 分扩大 100000 倍,实际要除以 100000
|
||||
uint8_t nshemi_bd; //北纬/南纬,N:北纬;S:南纬
|
||||
uint32_t longitude_bd; //经度 分扩大 100000 倍,实际要除以 100000
|
||||
uint8_t ewhemi_bd; //东经/西经,E:东经;W:西经
|
||||
uint32_t latitude_bd; //纬度 分扩大100000倍,实际要除以100000
|
||||
uint8_t nshemi_bd; //北纬/南纬,N:北纬;S:南纬
|
||||
uint32_t longitude_bd; //经度 分扩大100000倍,实际要除以100000
|
||||
uint8_t ewhemi_bd; //东经/西经,E:东经;W:西经
|
||||
}gps_msg;
|
||||
|
||||
/* E53_ST1传感器数据类型定义 ------------------------------------------------------------*/
|
||||
|
|
|
|||
|
|
@ -1,343 +0,0 @@
|
|||
#include "w25qxx.h"
|
||||
#include "quadspi.h"
|
||||
|
||||
int w25qxx_init(void)
|
||||
{
|
||||
MX_QUADSPI_Init();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int w25qxx_memory_mapped(void)
|
||||
{
|
||||
QSPI_CommandTypeDef cmd = {
|
||||
// Instruction
|
||||
.InstructionMode = QSPI_INSTRUCTION_1_LINE,
|
||||
.Instruction = FAST_READ_DUAL_IO_CMD,
|
||||
// Address
|
||||
.AddressMode = QSPI_ADDRESS_2_LINES,
|
||||
.Address = 0, // NOT USED for memory-mapped mode
|
||||
.AddressSize = QSPI_ADDRESS_24_BITS,
|
||||
// AlternateByte
|
||||
.AlternateByteMode = QSPI_ALTERNATE_BYTES_2_LINES,
|
||||
.AlternateBytes = 0xF0, // M7-M0 should be set to Fxh
|
||||
.AlternateBytesSize = QSPI_ALTERNATE_BYTES_8_BITS,
|
||||
// Dummy
|
||||
.DummyCycles = 0,
|
||||
// Data
|
||||
.DataMode = QSPI_DATA_2_LINES,
|
||||
.NbData = 0, // NOT USED for memory-mapped mode
|
||||
// DDR
|
||||
.DdrMode = QSPI_DDR_MODE_DISABLE,
|
||||
};
|
||||
QSPI_MemoryMappedTypeDef cfg = {
|
||||
.TimeOutPeriod = 0,
|
||||
.TimeOutActivation = QSPI_TIMEOUT_COUNTER_DISABLE,
|
||||
};
|
||||
if (HAL_QSPI_GetState(&hqspi) != HAL_QSPI_STATE_BUSY_MEM_MAPPED) {
|
||||
if (HAL_QSPI_Abort(&hqspi) != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
if (HAL_QSPI_MemoryMapped(&hqspi, &cmd, &cfg) != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t w25qxx_read_deviceid(void)
|
||||
{
|
||||
uint8_t recv_buf[2] = {0};
|
||||
uint16_t device_id = 0;
|
||||
QSPI_CommandTypeDef cmd = {
|
||||
// Instruction
|
||||
.InstructionMode = QSPI_INSTRUCTION_1_LINE,
|
||||
.Instruction = ManufactDeviceID_CMD,
|
||||
// Address
|
||||
.AddressMode = QSPI_ADDRESS_1_LINE,
|
||||
.Address = 0,
|
||||
.AddressSize = QSPI_ADDRESS_24_BITS,
|
||||
// AlternateByte
|
||||
.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE,
|
||||
// Dummy
|
||||
.DummyCycles = 0,
|
||||
// Data
|
||||
.DataMode = QSPI_DATA_1_LINE,
|
||||
.NbData = 2,
|
||||
// DDR
|
||||
.DdrMode = QSPI_DDR_MODE_DISABLE,
|
||||
};
|
||||
if (HAL_QSPI_Abort(&hqspi) != HAL_OK) {
|
||||
return 0;
|
||||
}
|
||||
if (HAL_QSPI_Command(&hqspi, &cmd, HAL_QSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK) {
|
||||
return 0;
|
||||
}
|
||||
if (HAL_QSPI_Receive(&hqspi, recv_buf, HAL_QSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK) {
|
||||
return 0;
|
||||
}
|
||||
device_id = (recv_buf[0] << 8) | recv_buf[1];
|
||||
return device_id;
|
||||
}
|
||||
|
||||
static void w25qxx_wait_busy(void)
|
||||
{
|
||||
uint8_t status;
|
||||
QSPI_CommandTypeDef cmd = {
|
||||
// Instruction
|
||||
.InstructionMode = QSPI_INSTRUCTION_1_LINE,
|
||||
.Instruction = READ_STATU_REGISTER_1,
|
||||
// Address
|
||||
.AddressMode = QSPI_ADDRESS_NONE,
|
||||
// AlternateByte
|
||||
.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE,
|
||||
// Dummy
|
||||
.DummyCycles = 0,
|
||||
// Data
|
||||
.DataMode = QSPI_DATA_1_LINE,
|
||||
.NbData = 1,
|
||||
// DDR
|
||||
.DdrMode = QSPI_DDR_MODE_DISABLE,
|
||||
};
|
||||
HAL_QSPI_Command(&hqspi, &cmd, HAL_QSPI_TIMEOUT_DEFAULT_VALUE);
|
||||
do {
|
||||
HAL_QSPI_Receive(&hqspi, &status, HAL_QSPI_TIMEOUT_DEFAULT_VALUE);
|
||||
} while ((status & 0x01) == 0x01);
|
||||
}
|
||||
|
||||
int w25qxx_read(uint8_t *buffer, uint32_t start_addr, uint16_t nbytes)
|
||||
{
|
||||
QSPI_CommandTypeDef cmd = {
|
||||
// Instruction
|
||||
.InstructionMode = QSPI_INSTRUCTION_1_LINE,
|
||||
.Instruction = FAST_READ_DUAL_IO_CMD,
|
||||
// Address
|
||||
.AddressMode = QSPI_ADDRESS_2_LINES,
|
||||
.Address = start_addr,
|
||||
.AddressSize = QSPI_ADDRESS_24_BITS,
|
||||
// AlternateByte
|
||||
.AlternateByteMode = QSPI_ALTERNATE_BYTES_2_LINES,
|
||||
.AlternateBytes = 0xF0, // M7-M0 should be set to Fxh
|
||||
.AlternateBytesSize = QSPI_ALTERNATE_BYTES_8_BITS,
|
||||
// Dummy
|
||||
.DummyCycles = 0,
|
||||
// Data
|
||||
.DataMode = QSPI_DATA_2_LINES,
|
||||
.NbData = nbytes,
|
||||
// DDR
|
||||
.DdrMode = QSPI_DDR_MODE_DISABLE,
|
||||
};
|
||||
if (HAL_QSPI_Abort(&hqspi) != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
if (HAL_QSPI_Command(&hqspi, &cmd, HAL_QSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
if (HAL_QSPI_Receive(&hqspi, buffer, HAL_QSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void w25qxx_write_enable(void)
|
||||
{
|
||||
QSPI_CommandTypeDef cmd = {
|
||||
// Instruction
|
||||
.InstructionMode = QSPI_INSTRUCTION_1_LINE,
|
||||
.Instruction = WRITE_ENABLE_CMD,
|
||||
// Address
|
||||
.AddressMode = QSPI_ADDRESS_NONE,
|
||||
// AlternateByte
|
||||
.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE,
|
||||
// Dummy
|
||||
.DummyCycles = 0,
|
||||
// Data
|
||||
.DataMode = QSPI_DATA_NONE,
|
||||
// DDR
|
||||
.DdrMode = QSPI_DDR_MODE_DISABLE,
|
||||
};
|
||||
HAL_QSPI_Command(&hqspi, &cmd, HAL_QSPI_TIMEOUT_DEFAULT_VALUE);
|
||||
// w25qxx_wait_busy();
|
||||
}
|
||||
|
||||
static void w25qxx_write_disable(void)
|
||||
{
|
||||
QSPI_CommandTypeDef cmd = {
|
||||
// Instruction
|
||||
.InstructionMode = QSPI_INSTRUCTION_1_LINE,
|
||||
.Instruction = WRITE_DISABLE_CMD,
|
||||
// Address
|
||||
.AddressMode = QSPI_ADDRESS_NONE,
|
||||
// AlternateByte
|
||||
.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE,
|
||||
// Dummy
|
||||
.DummyCycles = 0,
|
||||
// Data
|
||||
.DataMode = QSPI_DATA_NONE,
|
||||
// DDR
|
||||
.DdrMode = QSPI_DDR_MODE_DISABLE,
|
||||
};
|
||||
HAL_QSPI_Command(&hqspi, &cmd, HAL_QSPI_TIMEOUT_DEFAULT_VALUE);
|
||||
// w25qxx_wait_busy();
|
||||
}
|
||||
|
||||
int w25qxx_erase_sector(uint32_t sector_addr)
|
||||
{
|
||||
QSPI_CommandTypeDef cmd = {
|
||||
// Instruction
|
||||
.InstructionMode = QSPI_INSTRUCTION_1_LINE,
|
||||
.Instruction = SECTOR_ERASE_CMD,
|
||||
// Address
|
||||
.AddressMode = QSPI_ADDRESS_1_LINE,
|
||||
.Address = sector_addr,
|
||||
.AddressSize = QSPI_ADDRESS_24_BITS,
|
||||
// AlternateByte
|
||||
.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE,
|
||||
// Dummy
|
||||
.DummyCycles = 0,
|
||||
// Data
|
||||
.DataMode = QSPI_DATA_NONE,
|
||||
// DDR
|
||||
.DdrMode = QSPI_DDR_MODE_DISABLE,
|
||||
};
|
||||
|
||||
if (HAL_QSPI_Abort(&hqspi) != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
w25qxx_wait_busy();
|
||||
|
||||
w25qxx_write_enable();
|
||||
|
||||
if (HAL_QSPI_Command(&hqspi, &cmd, HAL_QSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
w25qxx_wait_busy();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int w25qxx_erase_chip(void)
|
||||
{
|
||||
QSPI_CommandTypeDef cmd = {
|
||||
// Instruction
|
||||
.InstructionMode = QSPI_INSTRUCTION_1_LINE,
|
||||
.Instruction = CHIP_ERASE_CMD,
|
||||
// Address
|
||||
.AddressMode = QSPI_ADDRESS_NONE,
|
||||
// AlternateByte
|
||||
.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE,
|
||||
// Dummy
|
||||
.DummyCycles = 0,
|
||||
// Data
|
||||
.DataMode = QSPI_DATA_NONE,
|
||||
// DDR
|
||||
.DdrMode = QSPI_DDR_MODE_DISABLE,
|
||||
};
|
||||
|
||||
if (HAL_QSPI_Abort(&hqspi) != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
w25qxx_wait_busy();
|
||||
|
||||
w25qxx_write_enable();
|
||||
|
||||
if (HAL_QSPI_Command(&hqspi, &cmd, HAL_QSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
w25qxx_wait_busy();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int w25qxx_page_program(uint8_t *dat, uint32_t write_addr, uint16_t nbytes)
|
||||
{
|
||||
QSPI_CommandTypeDef cmd = {
|
||||
// Instruction
|
||||
.InstructionMode = QSPI_INSTRUCTION_1_LINE,
|
||||
.Instruction = PAGE_PROGRAM_CMD,
|
||||
// Address
|
||||
.AddressMode = QSPI_ADDRESS_1_LINE,
|
||||
.Address = write_addr,
|
||||
.AddressSize = QSPI_ADDRESS_24_BITS,
|
||||
// AlternateByte
|
||||
.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE,
|
||||
// Dummy
|
||||
.DummyCycles = 0,
|
||||
// Data
|
||||
.DataMode = QSPI_DATA_1_LINE,
|
||||
.NbData = nbytes,
|
||||
// DDR
|
||||
.DdrMode = QSPI_DDR_MODE_DISABLE,
|
||||
};
|
||||
|
||||
if (HAL_QSPI_Abort(&hqspi) != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
w25qxx_wait_busy();
|
||||
|
||||
w25qxx_write_enable();
|
||||
|
||||
if (HAL_QSPI_Command(&hqspi, &cmd, HAL_QSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
if (HAL_QSPI_Transmit(&hqspi, dat, HAL_QSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
w25qxx_wait_busy();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int w25qxx_reset(void)
|
||||
{
|
||||
QSPI_CommandTypeDef cmd1 = {
|
||||
// Instruction
|
||||
.InstructionMode = QSPI_INSTRUCTION_1_LINE,
|
||||
.Instruction = ENABLE_RESET_CMD,
|
||||
// Address
|
||||
.AddressMode = QSPI_ADDRESS_NONE,
|
||||
// AlternateByte
|
||||
.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE,
|
||||
// Dummy
|
||||
.DummyCycles = 0,
|
||||
// Data
|
||||
.DataMode = QSPI_DATA_NONE,
|
||||
// DDR
|
||||
.DdrMode = QSPI_DDR_MODE_DISABLE,
|
||||
};
|
||||
QSPI_CommandTypeDef cmd2 = {
|
||||
// Instruction
|
||||
.InstructionMode = QSPI_INSTRUCTION_1_LINE,
|
||||
.Instruction = RESET_DEVICE_CMD,
|
||||
// Address
|
||||
.AddressMode = QSPI_ADDRESS_NONE,
|
||||
// AlternateByte
|
||||
.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE,
|
||||
// Dummy
|
||||
.DummyCycles = 0,
|
||||
// Data
|
||||
.DataMode = QSPI_DATA_NONE,
|
||||
// DDR
|
||||
.DdrMode = QSPI_DDR_MODE_DISABLE,
|
||||
};
|
||||
|
||||
if (HAL_QSPI_Abort(&hqspi) != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (HAL_QSPI_Command(&hqspi, &cmd1, HAL_QSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
if (HAL_QSPI_Command(&hqspi, &cmd2, HAL_QSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
w25qxx_wait_busy();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
#ifndef _W25QXX_H_
|
||||
#define _W25QXX_H_
|
||||
#include "main.h"
|
||||
|
||||
enum {
|
||||
ManufactDeviceID_CMD = 0x90,
|
||||
READ_STATU_REGISTER_1 = 0x05,
|
||||
READ_STATU_REGISTER_2 = 0x35,
|
||||
WRITE_STATU_REGISTER = 0x01,
|
||||
READ_DATA_CMD = 0x03,
|
||||
FAST_READ_CMD = 0x0B,
|
||||
FAST_READ_DUAL_O_CMD = 0x3B,
|
||||
FAST_READ_DUAL_IO_CMD = 0xBB,
|
||||
FAST_READ_QUAD_O_CMD = 0x6B,
|
||||
FAST_READ_QUAD_IO_CMD = 0xEB,
|
||||
WRITE_ENABLE_CMD = 0x06,
|
||||
WRITE_DISABLE_CMD = 0x04,
|
||||
SECTOR_ERASE_CMD = 0x20,
|
||||
CHIP_ERASE_CMD = 0xc7,
|
||||
PAGE_PROGRAM_CMD = 0x02,
|
||||
QUAD_PAGE_PROGRAM_CMD = 0x32,
|
||||
BLOCK_ERASE_64KB_CMD = 0xD8,
|
||||
BLOCK_ERASE_32KB_CMD = 0x52,
|
||||
ERASE_SUSPEND_CMD = 0x75,
|
||||
ERASE_RESUME_CMD = 0x7A,
|
||||
HIGH_PERFORM_MODE_CMD = 0xA3,
|
||||
ENABLE_RESET_CMD = 0x66,
|
||||
RESET_DEVICE_CMD = 0x99,
|
||||
};
|
||||
|
||||
int w25qxx_init(void);
|
||||
int w25qxx_memory_mapped(void);
|
||||
uint16_t w25qxx_read_deviceid(void);
|
||||
int w25qxx_read(uint8_t* buffer, uint32_t start_addr, uint16_t nbytes);
|
||||
int w25qxx_erase_sector(uint32_t sector_addr);
|
||||
int w25qxx_erase_chip(void);
|
||||
int w25qxx_page_program(uint8_t* dat, uint32_t write_addr, uint16_t nbytes);
|
||||
int w25qxx_reset(void);
|
||||
|
||||
#endif /* _W25QXX_H_ */
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* File Name : QUADSPI.h
|
||||
* Description : This file provides code for the configuration
|
||||
* of the QUADSPI instances.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© Copyright (c) 2022 STMicroelectronics.
|
||||
* All rights reserved.</center></h2>
|
||||
*
|
||||
* This software component is licensed by ST under BSD 3-Clause license,
|
||||
* the "License"; You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at:
|
||||
* opensource.org/licenses/BSD-3-Clause
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __quadspi_H
|
||||
#define __quadspi_H
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "main.h"
|
||||
|
||||
/* USER CODE BEGIN Includes */
|
||||
|
||||
/* USER CODE END Includes */
|
||||
|
||||
extern QSPI_HandleTypeDef hqspi;
|
||||
|
||||
/* USER CODE BEGIN Private defines */
|
||||
|
||||
/* USER CODE END Private defines */
|
||||
|
||||
void MX_QUADSPI_Init(void);
|
||||
|
||||
/* USER CODE BEGIN Prototypes */
|
||||
|
||||
/* USER CODE END Prototypes */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /*__ quadspi_H */
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* File Name : SDMMC.h
|
||||
* Description : This file provides code for the configuration
|
||||
* of the SDMMC instances.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© Copyright (c) 2020 STMicroelectronics.
|
||||
* All rights reserved.</center></h2>
|
||||
*
|
||||
* This software component is licensed by ST under BSD 3-Clause license,
|
||||
* the "License"; You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at:
|
||||
* opensource.org/licenses/BSD-3-Clause
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __sdmmc_H
|
||||
#define __sdmmc_H
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "main.h"
|
||||
|
||||
/* USER CODE BEGIN Includes */
|
||||
|
||||
/* USER CODE END Includes */
|
||||
|
||||
extern SD_HandleTypeDef hsd1;
|
||||
|
||||
/* USER CODE BEGIN Private defines */
|
||||
|
||||
/* USER CODE END Private defines */
|
||||
|
||||
void MX_SDMMC1_SD_Init(void);
|
||||
|
||||
/* USER CODE BEGIN Prototypes */
|
||||
|
||||
/* USER CODE END Prototypes */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /*__ sdmmc_H */
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
|
|
@ -78,11 +78,11 @@
|
|||
/*#define HAL_OSPI_MODULE_ENABLED */
|
||||
/*#define HAL_PCD_MODULE_ENABLED */
|
||||
/*#define HAL_QSPI_MODULE_ENABLED */
|
||||
#define HAL_QSPI_MODULE_ENABLED
|
||||
/*#define HAL_QSPI_MODULE_ENABLED */
|
||||
/*#define HAL_RNG_MODULE_ENABLED */
|
||||
/*#define HAL_RTC_MODULE_ENABLED */
|
||||
/*#define HAL_SAI_MODULE_ENABLED */
|
||||
#define HAL_SD_MODULE_ENABLED
|
||||
/*#define HAL_SD_MODULE_ENABLED */
|
||||
/*#define HAL_SMBUS_MODULE_ENABLED */
|
||||
/*#define HAL_SMARTCARD_MODULE_ENABLED */
|
||||
#define HAL_SPI_MODULE_ENABLED
|
||||
|
|
|
|||
|
|
@ -103,24 +103,21 @@ void SystemClock_Config(void)
|
|||
{
|
||||
Error_Handler();
|
||||
}
|
||||
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1|RCC_PERIPHCLK_USART2
|
||||
|RCC_PERIPHCLK_USART3|RCC_PERIPHCLK_LPUART1
|
||||
|RCC_PERIPHCLK_I2C1|RCC_PERIPHCLK_SDMMC1
|
||||
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART2|RCC_PERIPHCLK_USART3
|
||||
|RCC_PERIPHCLK_LPUART1|RCC_PERIPHCLK_I2C1
|
||||
|RCC_PERIPHCLK_ADC;
|
||||
PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2;
|
||||
PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1;
|
||||
PeriphClkInit.Usart3ClockSelection = RCC_USART3CLKSOURCE_PCLK1;
|
||||
PeriphClkInit.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PCLK1;
|
||||
PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_PCLK1;
|
||||
PeriphClkInit.AdcClockSelection = RCC_ADCCLKSOURCE_PLLSAI1;
|
||||
PeriphClkInit.Sdmmc1ClockSelection = RCC_SDMMC1CLKSOURCE_PLLSAI1;
|
||||
PeriphClkInit.PLLSAI1.PLLSAI1Source = RCC_PLLSOURCE_MSI;
|
||||
PeriphClkInit.PLLSAI1.PLLSAI1M = 1;
|
||||
PeriphClkInit.PLLSAI1.PLLSAI1N = 16;
|
||||
PeriphClkInit.PLLSAI1.PLLSAI1P = RCC_PLLP_DIV7;
|
||||
PeriphClkInit.PLLSAI1.PLLSAI1Q = RCC_PLLQ_DIV2;
|
||||
PeriphClkInit.PLLSAI1.PLLSAI1R = RCC_PLLR_DIV2;
|
||||
PeriphClkInit.PLLSAI1.PLLSAI1ClockOut = RCC_PLLSAI1_48M2CLK|RCC_PLLSAI1_ADC1CLK;
|
||||
PeriphClkInit.PLLSAI1.PLLSAI1ClockOut = RCC_PLLSAI1_ADC1CLK;
|
||||
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
|
|
|
|||
|
|
@ -1,110 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* File Name : QUADSPI.c
|
||||
* Description : This file provides code for the configuration
|
||||
* of the QUADSPI instances.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© Copyright (c) 2022 STMicroelectronics.
|
||||
* All rights reserved.</center></h2>
|
||||
*
|
||||
* This software component is licensed by ST under BSD 3-Clause license,
|
||||
* the "License"; You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at:
|
||||
* opensource.org/licenses/BSD-3-Clause
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "quadspi.h"
|
||||
|
||||
/* USER CODE BEGIN 0 */
|
||||
|
||||
/* USER CODE END 0 */
|
||||
|
||||
QSPI_HandleTypeDef hqspi;
|
||||
|
||||
/* QUADSPI init function */
|
||||
void MX_QUADSPI_Init(void)
|
||||
{
|
||||
|
||||
hqspi.Instance = QUADSPI;
|
||||
hqspi.Init.ClockPrescaler = 0;
|
||||
hqspi.Init.FifoThreshold = 4;
|
||||
hqspi.Init.SampleShifting = QSPI_SAMPLE_SHIFTING_HALFCYCLE;
|
||||
hqspi.Init.FlashSize = 22;
|
||||
hqspi.Init.ChipSelectHighTime = QSPI_CS_HIGH_TIME_4_CYCLE;
|
||||
hqspi.Init.ClockMode = QSPI_CLOCK_MODE_0;
|
||||
hqspi.Init.FlashID = QSPI_FLASH_ID_1;
|
||||
hqspi.Init.DualFlash = QSPI_DUALFLASH_DISABLE;
|
||||
if (HAL_QSPI_Init(&hqspi) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void HAL_QSPI_MspInit(QSPI_HandleTypeDef* qspiHandle)
|
||||
{
|
||||
|
||||
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
||||
if(qspiHandle->Instance==QUADSPI)
|
||||
{
|
||||
/* USER CODE BEGIN QUADSPI_MspInit 0 */
|
||||
|
||||
/* USER CODE END QUADSPI_MspInit 0 */
|
||||
/* QUADSPI clock enable */
|
||||
__HAL_RCC_QSPI_CLK_ENABLE();
|
||||
|
||||
__HAL_RCC_GPIOB_CLK_ENABLE();
|
||||
/**QUADSPI GPIO Configuration
|
||||
PB0 ------> QUADSPI_BK1_IO1
|
||||
PB1 ------> QUADSPI_BK1_IO0
|
||||
PB10 ------> QUADSPI_CLK
|
||||
PB11 ------> QUADSPI_BK1_NCS
|
||||
*/
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_10|GPIO_PIN_11;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||||
GPIO_InitStruct.Alternate = GPIO_AF10_QUADSPI;
|
||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||
|
||||
/* USER CODE BEGIN QUADSPI_MspInit 1 */
|
||||
|
||||
/* USER CODE END QUADSPI_MspInit 1 */
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_QSPI_MspDeInit(QSPI_HandleTypeDef* qspiHandle)
|
||||
{
|
||||
|
||||
if(qspiHandle->Instance==QUADSPI)
|
||||
{
|
||||
/* USER CODE BEGIN QUADSPI_MspDeInit 0 */
|
||||
|
||||
/* USER CODE END QUADSPI_MspDeInit 0 */
|
||||
/* Peripheral clock disable */
|
||||
__HAL_RCC_QSPI_CLK_DISABLE();
|
||||
|
||||
/**QUADSPI GPIO Configuration
|
||||
PB0 ------> QUADSPI_BK1_IO1
|
||||
PB1 ------> QUADSPI_BK1_IO0
|
||||
PB10 ------> QUADSPI_CLK
|
||||
PB11 ------> QUADSPI_BK1_NCS
|
||||
*/
|
||||
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_10|GPIO_PIN_11);
|
||||
|
||||
/* USER CODE BEGIN QUADSPI_MspDeInit 1 */
|
||||
|
||||
/* USER CODE END QUADSPI_MspDeInit 1 */
|
||||
}
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN 1 */
|
||||
|
||||
/* USER CODE END 1 */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
|
|
@ -1,117 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* File Name : SDMMC.c
|
||||
* Description : This file provides code for the configuration
|
||||
* of the SDMMC instances.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© Copyright (c) 2020 STMicroelectronics.
|
||||
* All rights reserved.</center></h2>
|
||||
*
|
||||
* This software component is licensed by ST under BSD 3-Clause license,
|
||||
* the "License"; You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at:
|
||||
* opensource.org/licenses/BSD-3-Clause
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "sdmmc.h"
|
||||
|
||||
/* USER CODE BEGIN 0 */
|
||||
|
||||
/* USER CODE END 0 */
|
||||
|
||||
SD_HandleTypeDef hsd1;
|
||||
|
||||
/* SDMMC1 init function */
|
||||
|
||||
void MX_SDMMC1_SD_Init(void)
|
||||
{
|
||||
|
||||
hsd1.Instance = SDMMC1;
|
||||
hsd1.Init.ClockEdge = SDMMC_CLOCK_EDGE_RISING;
|
||||
hsd1.Init.ClockBypass = SDMMC_CLOCK_BYPASS_DISABLE;
|
||||
hsd1.Init.ClockPowerSave = SDMMC_CLOCK_POWER_SAVE_DISABLE;
|
||||
hsd1.Init.BusWide = SDMMC_BUS_WIDE_1B;
|
||||
hsd1.Init.HardwareFlowControl = SDMMC_HARDWARE_FLOW_CONTROL_DISABLE;
|
||||
hsd1.Init.ClockDiv = 0;
|
||||
if (HAL_SD_Init(&hsd1) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void HAL_SD_MspInit(SD_HandleTypeDef* sdHandle)
|
||||
{
|
||||
|
||||
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
||||
if(sdHandle->Instance==SDMMC1)
|
||||
{
|
||||
/* USER CODE BEGIN SDMMC1_MspInit 0 */
|
||||
|
||||
/* USER CODE END SDMMC1_MspInit 0 */
|
||||
/* SDMMC1 clock enable */
|
||||
__HAL_RCC_SDMMC1_CLK_ENABLE();
|
||||
|
||||
__HAL_RCC_GPIOC_CLK_ENABLE();
|
||||
__HAL_RCC_GPIOD_CLK_ENABLE();
|
||||
/**SDMMC1 GPIO Configuration
|
||||
PC8 ------> SDMMC1_D0
|
||||
PC12 ------> SDMMC1_CK
|
||||
PD2 ------> SDMMC1_CMD
|
||||
*/
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_12;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||||
GPIO_InitStruct.Alternate = GPIO_AF12_SDMMC1;
|
||||
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
||||
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_2;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||||
GPIO_InitStruct.Alternate = GPIO_AF12_SDMMC1;
|
||||
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
|
||||
|
||||
/* USER CODE BEGIN SDMMC1_MspInit 1 */
|
||||
|
||||
/* USER CODE END SDMMC1_MspInit 1 */
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_SD_MspDeInit(SD_HandleTypeDef* sdHandle)
|
||||
{
|
||||
|
||||
if(sdHandle->Instance==SDMMC1)
|
||||
{
|
||||
/* USER CODE BEGIN SDMMC1_MspDeInit 0 */
|
||||
|
||||
/* USER CODE END SDMMC1_MspDeInit 0 */
|
||||
/* Peripheral clock disable */
|
||||
__HAL_RCC_SDMMC1_CLK_DISABLE();
|
||||
|
||||
/**SDMMC1 GPIO Configuration
|
||||
PC8 ------> SDMMC1_D0
|
||||
PC12 ------> SDMMC1_CK
|
||||
PD2 ------> SDMMC1_CMD
|
||||
*/
|
||||
HAL_GPIO_DeInit(GPIOC, GPIO_PIN_8|GPIO_PIN_12);
|
||||
|
||||
HAL_GPIO_DeInit(GPIOD, GPIO_PIN_2);
|
||||
|
||||
/* USER CODE BEGIN SDMMC1_MspDeInit 1 */
|
||||
|
||||
/* USER CODE END SDMMC1_MspDeInit 1 */
|
||||
}
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN 1 */
|
||||
|
||||
/* USER CODE END 1 */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
|
|
@ -1,360 +0,0 @@
|
|||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file stm32l4xx_it.c
|
||||
* @brief Interrupt Service Routines.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© Copyright (c) 2019 STMicroelectronics.
|
||||
* All rights reserved.</center></h2>
|
||||
*
|
||||
* This software component is licensed by ST under BSD 3-Clause license,
|
||||
* the "License"; You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at:
|
||||
* opensource.org/licenses/BSD-3-Clause
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "main.h"
|
||||
#include "stm32l4xx_it.h"
|
||||
#include "tos_k.h"
|
||||
/* Private includes ----------------------------------------------------------*/
|
||||
/* USER CODE BEGIN Includes */
|
||||
#include "machine_uart.h"
|
||||
/* USER CODE END Includes */
|
||||
|
||||
/* Private typedef -----------------------------------------------------------*/
|
||||
/* USER CODE BEGIN TD */
|
||||
|
||||
/* USER CODE END TD */
|
||||
|
||||
/* Private define ------------------------------------------------------------*/
|
||||
/* USER CODE BEGIN PD */
|
||||
|
||||
/* USER CODE END PD */
|
||||
|
||||
/* Private macro -------------------------------------------------------------*/
|
||||
/* USER CODE BEGIN PM */
|
||||
|
||||
/* USER CODE END PM */
|
||||
|
||||
/* Private variables ---------------------------------------------------------*/
|
||||
/* USER CODE BEGIN PV */
|
||||
|
||||
/* USER CODE END PV */
|
||||
|
||||
/* Private function prototypes -----------------------------------------------*/
|
||||
/* USER CODE BEGIN PFP */
|
||||
|
||||
/* USER CODE END PFP */
|
||||
|
||||
/* Private user code ---------------------------------------------------------*/
|
||||
/* USER CODE BEGIN 0 */
|
||||
|
||||
/* USER CODE END 0 */
|
||||
|
||||
/* External variables --------------------------------------------------------*/
|
||||
extern UART_HandleTypeDef hlpuart1;
|
||||
extern UART_HandleTypeDef huart2;
|
||||
extern UART_HandleTypeDef huart3;
|
||||
/* USER CODE BEGIN EV */
|
||||
|
||||
/* USER CODE END EV */
|
||||
|
||||
/******************************************************************************/
|
||||
/* Cortex-M4 Processor Interruption and Exception Handlers */
|
||||
/******************************************************************************/
|
||||
/**
|
||||
* @brief This function handles Non maskable interrupt.
|
||||
*/
|
||||
void NMI_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN NonMaskableInt_IRQn 0 */
|
||||
|
||||
/* USER CODE END NonMaskableInt_IRQn 0 */
|
||||
/* USER CODE BEGIN NonMaskableInt_IRQn 1 */
|
||||
|
||||
/* USER CODE END NonMaskableInt_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles Hard fault interrupt.
|
||||
*/
|
||||
void HardFault_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN HardFault_IRQn 0 */
|
||||
|
||||
/* USER CODE END HardFault_IRQn 0 */
|
||||
while (1)
|
||||
{
|
||||
/* USER CODE BEGIN W1_HardFault_IRQn 0 */
|
||||
/* USER CODE END W1_HardFault_IRQn 0 */
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles Memory management fault.
|
||||
*/
|
||||
void MemManage_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN MemoryManagement_IRQn 0 */
|
||||
|
||||
/* USER CODE END MemoryManagement_IRQn 0 */
|
||||
while (1)
|
||||
{
|
||||
/* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */
|
||||
/* USER CODE END W1_MemoryManagement_IRQn 0 */
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles Prefetch fault, memory access fault.
|
||||
*/
|
||||
void BusFault_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN BusFault_IRQn 0 */
|
||||
|
||||
/* USER CODE END BusFault_IRQn 0 */
|
||||
while (1)
|
||||
{
|
||||
/* USER CODE BEGIN W1_BusFault_IRQn 0 */
|
||||
/* USER CODE END W1_BusFault_IRQn 0 */
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles Undefined instruction or illegal state.
|
||||
*/
|
||||
void UsageFault_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN UsageFault_IRQn 0 */
|
||||
|
||||
/* USER CODE END UsageFault_IRQn 0 */
|
||||
while (1)
|
||||
{
|
||||
/* USER CODE BEGIN W1_UsageFault_IRQn 0 */
|
||||
/* USER CODE END W1_UsageFault_IRQn 0 */
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles System service call via SWI instruction.
|
||||
*/
|
||||
void SVC_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN SVCall_IRQn 0 */
|
||||
|
||||
/* USER CODE END SVCall_IRQn 0 */
|
||||
/* USER CODE BEGIN SVCall_IRQn 1 */
|
||||
|
||||
/* USER CODE END SVCall_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles Debug monitor.
|
||||
*/
|
||||
void DebugMon_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN DebugMonitor_IRQn 0 */
|
||||
|
||||
/* USER CODE END DebugMonitor_IRQn 0 */
|
||||
/* USER CODE BEGIN DebugMonitor_IRQn 1 */
|
||||
|
||||
/* USER CODE END DebugMonitor_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles Pendable request for system service.
|
||||
*/
|
||||
__weak void PendSV_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN PendSV_IRQn 0 */
|
||||
|
||||
/* USER CODE END PendSV_IRQn 0 */
|
||||
/* USER CODE BEGIN PendSV_IRQn 1 */
|
||||
|
||||
/* USER CODE END PendSV_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles System tick timer.
|
||||
*/
|
||||
void SysTick_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN SysTick_IRQn 0 */
|
||||
|
||||
/* USER CODE END SysTick_IRQn 0 */
|
||||
HAL_IncTick();
|
||||
if (tos_knl_is_running())
|
||||
{
|
||||
tos_knl_irq_enter();
|
||||
tos_tick_handler();
|
||||
tos_knl_irq_leave();
|
||||
}
|
||||
//HAL_SYSTICK_IRQHandler();
|
||||
/* USER CODE BEGIN SysTick_IRQn 1 */
|
||||
|
||||
/* USER CODE END SysTick_IRQn 1 */
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
/* STM32L4xx Peripheral Interrupt Handlers */
|
||||
/* Add here the Interrupt Handlers for the used peripherals. */
|
||||
/* For the available peripheral interrupt handler names, */
|
||||
/* please refer to the startup file (startup_stm32l4xx.s). */
|
||||
/******************************************************************************/
|
||||
|
||||
/**
|
||||
* @brief This function handles EXTI line1 interrupt.
|
||||
*/
|
||||
void EXTI1_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN EXTI1_IRQn 0 */
|
||||
|
||||
/* USER CODE END EXTI1_IRQn 0 */
|
||||
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1);
|
||||
/* USER CODE BEGIN EXTI1_IRQn 1 */
|
||||
|
||||
/* USER CODE END EXTI1_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles EXTI line2 interrupt.
|
||||
*/
|
||||
void EXTI2_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN EXTI2_IRQn 0 */
|
||||
|
||||
/* USER CODE END EXTI2_IRQn 0 */
|
||||
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2);
|
||||
/* USER CODE BEGIN EXTI2_IRQn 1 */
|
||||
|
||||
/* USER CODE END EXTI2_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles EXTI line3 interrupt.
|
||||
*/
|
||||
void EXTI3_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN EXTI3_IRQn 0 */
|
||||
|
||||
/* USER CODE END EXTI3_IRQn 0 */
|
||||
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
|
||||
/* USER CODE BEGIN EXTI3_IRQn 1 */
|
||||
|
||||
/* USER CODE END EXTI3_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles EXTI line4 interrupt.
|
||||
*/
|
||||
void EXTI4_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN EXTI4_IRQn 0 */
|
||||
|
||||
/* USER CODE END EXTI4_IRQn 0 */
|
||||
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4);
|
||||
/* USER CODE BEGIN EXTI4_IRQn 1 */
|
||||
|
||||
/* USER CODE END EXTI4_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles EXTI line[9:5] interrupts.
|
||||
*/
|
||||
void EXTI9_5_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN EXTI9_5_IRQn 0 */
|
||||
|
||||
/* USER CODE END EXTI9_5_IRQn 0 */
|
||||
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_5);
|
||||
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_6);
|
||||
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_7);
|
||||
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_8);
|
||||
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_9);
|
||||
/* USER CODE BEGIN EXTI9_5_IRQn 1 */
|
||||
|
||||
/* USER CODE END EXTI9_5_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles EXTI line[15:10] interrupts.
|
||||
*/
|
||||
void EXTI15_10_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN EXTI15_10_IRQn 0 */
|
||||
|
||||
/* USER CODE END EXTI15_10_IRQn 0 */
|
||||
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_10);
|
||||
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_11);
|
||||
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12);
|
||||
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
|
||||
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_14);
|
||||
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_15);
|
||||
/* USER CODE BEGIN EXTI15_10_IRQn 1 */
|
||||
|
||||
/* USER CODE END EXTI15_10_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles USART2 global interrupt.
|
||||
*/
|
||||
void USART2_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN USART2_IRQn 0 */
|
||||
|
||||
/* USER CODE END USART2_IRQn 0 */
|
||||
HAL_UART_IRQHandler(&huart2);
|
||||
/* USER CODE BEGIN USART2_IRQn 1 */
|
||||
|
||||
/* USER CODE END USART2_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles USART3 global interrupt.
|
||||
*/
|
||||
void USART3_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN USART3_IRQn 0 */
|
||||
|
||||
/* USER CODE END USART3_IRQn 0 */
|
||||
HAL_UART_IRQHandler(&huart3);
|
||||
/* USER CODE BEGIN USART3_IRQn 1 */
|
||||
|
||||
/* USER CODE END USART3_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles LPUART1 global interrupt.
|
||||
*/
|
||||
void LPUART1_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN LPUART1_IRQn 0 */
|
||||
|
||||
/* USER CODE END LPUART1_IRQn 0 */
|
||||
HAL_UART_IRQHandler(&hlpuart1);
|
||||
/* USER CODE BEGIN LPUART1_IRQn 1 */
|
||||
|
||||
/* USER CODE END LPUART1_IRQn 1 */
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN 1 */
|
||||
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (huart->Instance == LPUART1) {
|
||||
mp_hal_uart_irq_handler(0);
|
||||
} else if (huart->Instance == USART1) {
|
||||
mp_hal_uart_irq_handler(1);
|
||||
} else if (huart->Instance == USART2) {
|
||||
mp_hal_uart_irq_handler(2);
|
||||
} else if (huart->Instance == USART3) {
|
||||
mp_hal_uart_irq_handler(3);
|
||||
}
|
||||
}
|
||||
/* USER CODE END 1 */
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
|
|
@ -24,7 +24,6 @@
|
|||
/* USER CODE BEGIN 0 */
|
||||
uint8_t data;
|
||||
uint8_t shell_data;
|
||||
extern void mp_hal_uart_rx_start(uint32_t uart_id);
|
||||
/* USER CODE END 0 */
|
||||
|
||||
UART_HandleTypeDef hlpuart1;
|
||||
|
|
@ -50,14 +49,10 @@ void MX_LPUART1_UART_Init(void)
|
|||
{
|
||||
Error_Handler();
|
||||
}
|
||||
#ifdef USE_MICROPYTHON
|
||||
mp_hal_uart_rx_start(0);
|
||||
#else
|
||||
HAL_UART_Receive_IT(&hlpuart1, &data, 1);
|
||||
HAL_UART_Receive_IT(&hlpuart1, &data, 1);
|
||||
#if AT_INPUT_TYPE_FRAME_EN
|
||||
__HAL_UART_ENABLE_IT(&hlpuart1, UART_IT_IDLE);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
/* USART1 init function */
|
||||
|
||||
|
|
@ -78,9 +73,6 @@ void MX_USART1_UART_Init(void)
|
|||
{
|
||||
Error_Handler();
|
||||
}
|
||||
#ifdef USE_MICROPYTHON
|
||||
mp_hal_uart_rx_start(1);
|
||||
#endif
|
||||
}
|
||||
/* USART2 init function */
|
||||
|
||||
|
|
@ -101,11 +93,7 @@ void MX_USART2_UART_Init(void)
|
|||
{
|
||||
Error_Handler();
|
||||
}
|
||||
#ifdef USE_MICROPYTHON
|
||||
mp_hal_uart_rx_start(2);
|
||||
#else
|
||||
HAL_UART_Receive_IT(&huart2, &shell_data, 1);
|
||||
#endif
|
||||
}
|
||||
/* USART3 init function */
|
||||
|
||||
|
|
@ -126,9 +114,7 @@ void MX_USART3_UART_Init(void)
|
|||
{
|
||||
Error_Handler();
|
||||
}
|
||||
#ifdef USE_MICROPYTHON
|
||||
mp_hal_uart_rx_start(3);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ BUILD_DIR = build
|
|||
# source
|
||||
######################################
|
||||
# C sources
|
||||
|
||||
KERNEL_SRC = \
|
||||
${wildcard $(TOP_DIR)/kernel/core/*.c}
|
||||
C_SOURCES += $(KERNEL_SRC)
|
||||
|
|
@ -45,14 +44,9 @@ ARCH_SRC = \
|
|||
${wildcard $(TOP_DIR)/arch/arm/arm-v7m/common/*.c}
|
||||
C_SOURCES += $(ARCH_SRC)
|
||||
|
||||
USE_CMSIS_OS2 ?= 0
|
||||
ifeq ($(USE_CMSIS_OS2),1)
|
||||
CMSIS_SRC = $(TOP_DIR)/osal/cmsis_os2/cmsis_os2.c
|
||||
else
|
||||
CMSIS_SRC = $(TOP_DIR)/osal/cmsis_os/cmsis_os.c
|
||||
endif
|
||||
|
||||
C_SOURCES += $(CMSIS_SRC)
|
||||
CMSIS_SRC = \
|
||||
${wildcard $(TOP_DIR)/osal/cmsis_os/*.c}
|
||||
C_SOURCES += $(CMSIS_SRC)
|
||||
|
||||
HAL_DRIVER_SRC = \
|
||||
$(TOP_DIR)/board/BearPi_STM32L431RC/BSP/Src/main.c \
|
||||
|
|
@ -162,15 +156,9 @@ KERNEL_INC = \
|
|||
-I $(TOP_DIR)/arch/arm/arm-v7m/cortex-m4/gcc \
|
||||
-I $(TOP_DIR)/board/\BearPi_STM32L431RC/TOS-CONFIG
|
||||
C_INCLUDES += $(KERNEL_INC)
|
||||
ifeq ($(USE_CMSIS_OS2),1)
|
||||
CMSIS_INC = -I$(TOP_DIR)/osal/cmsis_os2
|
||||
else
|
||||
CMSIS_INC = -I$(TOP_DIR)/osal/cmsis_os
|
||||
endif
|
||||
|
||||
CMSIS_INC += -I$(TOP_DIR)/osal/os_tick
|
||||
|
||||
C_INCLUDES += $(CMSIS_INC)
|
||||
CMSIS_INC = \
|
||||
-I $(TOP_DIR)/osal/cmsis_os
|
||||
C_INCLUDES += $(CMSIS_INC)
|
||||
|
||||
HAL_DRIVER_INC = \
|
||||
-I $(TOP_DIR)/board/BearPi_STM32L431RC/BSP/Inc \
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,872 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
|
||||
|
||||
<SchemaVersion>2.1</SchemaVersion>
|
||||
|
||||
<Header>### uVision Project, (C) Keil Software</Header>
|
||||
|
||||
<Targets>
|
||||
<Target>
|
||||
<TargetName>TencentOS_tiny</TargetName>
|
||||
<ToolsetNumber>0x4</ToolsetNumber>
|
||||
<ToolsetName>ARM-ADS</ToolsetName>
|
||||
<pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
|
||||
<uAC6>0</uAC6>
|
||||
<TargetOption>
|
||||
<TargetCommonOption>
|
||||
<Device>STM32L431RCTx</Device>
|
||||
<Vendor>STMicroelectronics</Vendor>
|
||||
<PackID>Keil.STM32L4xx_DFP.2.2.0</PackID>
|
||||
<PackURL>http://www.keil.com/pack</PackURL>
|
||||
<Cpu>IRAM(0x20000000-0x2000FFFF) IROM(0x8000000-0x803FFFF) CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4")</Cpu>
|
||||
<FlashUtilSpec></FlashUtilSpec>
|
||||
<StartupFile></StartupFile>
|
||||
<FlashDriverDll></FlashDriverDll>
|
||||
<DeviceId></DeviceId>
|
||||
<RegisterFile></RegisterFile>
|
||||
<MemoryEnv></MemoryEnv>
|
||||
<Cmp></Cmp>
|
||||
<Asm></Asm>
|
||||
<Linker></Linker>
|
||||
<OHString></OHString>
|
||||
<InfinionOptionDll></InfinionOptionDll>
|
||||
<SLE66CMisc></SLE66CMisc>
|
||||
<SLE66AMisc></SLE66AMisc>
|
||||
<SLE66LinkerMisc></SLE66LinkerMisc>
|
||||
<SFDFile>$$Device:STM32L431RCTx$CMSIS\SVD\STM32L4x1.svd</SFDFile>
|
||||
<bCustSvd>0</bCustSvd>
|
||||
<UseEnv>0</UseEnv>
|
||||
<BinPath></BinPath>
|
||||
<IncludePath></IncludePath>
|
||||
<LibPath></LibPath>
|
||||
<RegisterFilePath></RegisterFilePath>
|
||||
<DBRegisterFilePath></DBRegisterFilePath>
|
||||
<TargetStatus>
|
||||
<Error>0</Error>
|
||||
<ExitCodeStop>0</ExitCodeStop>
|
||||
<ButtonStop>0</ButtonStop>
|
||||
<NotGenerated>0</NotGenerated>
|
||||
<InvalidFlash>1</InvalidFlash>
|
||||
</TargetStatus>
|
||||
<OutputDirectory>.\obj\</OutputDirectory>
|
||||
<OutputName>TencentOS_tiny</OutputName>
|
||||
<CreateExecutable>1</CreateExecutable>
|
||||
<CreateLib>0</CreateLib>
|
||||
<CreateHexFile>1</CreateHexFile>
|
||||
<DebugInformation>1</DebugInformation>
|
||||
<BrowseInformation>0</BrowseInformation>
|
||||
<ListingPath>.\list\</ListingPath>
|
||||
<HexFormatSelection>1</HexFormatSelection>
|
||||
<Merge32K>0</Merge32K>
|
||||
<CreateBatchFile>0</CreateBatchFile>
|
||||
<BeforeCompile>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopU1X>0</nStopU1X>
|
||||
<nStopU2X>0</nStopU2X>
|
||||
</BeforeCompile>
|
||||
<BeforeMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopB1X>0</nStopB1X>
|
||||
<nStopB2X>0</nStopB2X>
|
||||
</BeforeMake>
|
||||
<AfterMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopA1X>0</nStopA1X>
|
||||
<nStopA2X>0</nStopA2X>
|
||||
</AfterMake>
|
||||
<SelectedForBatchBuild>0</SelectedForBatchBuild>
|
||||
<SVCSIdString></SVCSIdString>
|
||||
</TargetCommonOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>0</UseCPPCompiler>
|
||||
<RVCTCodeConst>0</RVCTCodeConst>
|
||||
<RVCTZI>0</RVCTZI>
|
||||
<RVCTOtherData>0</RVCTOtherData>
|
||||
<ModuleSelection>0</ModuleSelection>
|
||||
<IncludeInBuild>1</IncludeInBuild>
|
||||
<AlwaysBuild>0</AlwaysBuild>
|
||||
<GenerateAssemblyFile>0</GenerateAssemblyFile>
|
||||
<AssembleAssemblyFile>0</AssembleAssemblyFile>
|
||||
<PublicsOnly>0</PublicsOnly>
|
||||
<StopOnExitCode>3</StopOnExitCode>
|
||||
<CustomArgument></CustomArgument>
|
||||
<IncludeLibraryModules></IncludeLibraryModules>
|
||||
<ComprImg>0</ComprImg>
|
||||
</CommonProperty>
|
||||
<DllOption>
|
||||
<SimDllName>SARMCM3.DLL</SimDllName>
|
||||
<SimDllArguments>-REMAP -MPU</SimDllArguments>
|
||||
<SimDlgDll>DCM.DLL</SimDlgDll>
|
||||
<SimDlgDllArguments>-pCM4</SimDlgDllArguments>
|
||||
<TargetDllName>SARMCM3.DLL</TargetDllName>
|
||||
<TargetDllArguments>-MPU</TargetDllArguments>
|
||||
<TargetDlgDll>TCM.DLL</TargetDlgDll>
|
||||
<TargetDlgDllArguments>-pCM4</TargetDlgDllArguments>
|
||||
</DllOption>
|
||||
<DebugOption>
|
||||
<OPTHX>
|
||||
<HexSelection>1</HexSelection>
|
||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||
<HexOffset>0</HexOffset>
|
||||
<Oh166RecLen>16</Oh166RecLen>
|
||||
</OPTHX>
|
||||
</DebugOption>
|
||||
<Utilities>
|
||||
<Flash1>
|
||||
<UseTargetDll>1</UseTargetDll>
|
||||
<UseExternalTool>0</UseExternalTool>
|
||||
<RunIndependent>0</RunIndependent>
|
||||
<UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
|
||||
<Capability>1</Capability>
|
||||
<DriverSelection>4107</DriverSelection>
|
||||
</Flash1>
|
||||
<bUseTDR>1</bUseTDR>
|
||||
<Flash2>BIN\UL2CM3.DLL</Flash2>
|
||||
<Flash3></Flash3>
|
||||
<Flash4></Flash4>
|
||||
<pFcarmOut></pFcarmOut>
|
||||
<pFcarmGrp></pFcarmGrp>
|
||||
<pFcArmRoot></pFcArmRoot>
|
||||
<FcArmLst>0</FcArmLst>
|
||||
</Utilities>
|
||||
<TargetArmAds>
|
||||
<ArmAdsMisc>
|
||||
<GenerateListings>0</GenerateListings>
|
||||
<asHll>1</asHll>
|
||||
<asAsm>1</asAsm>
|
||||
<asMacX>1</asMacX>
|
||||
<asSyms>1</asSyms>
|
||||
<asFals>1</asFals>
|
||||
<asDbgD>1</asDbgD>
|
||||
<asForm>1</asForm>
|
||||
<ldLst>0</ldLst>
|
||||
<ldmm>1</ldmm>
|
||||
<ldXref>1</ldXref>
|
||||
<BigEnd>0</BigEnd>
|
||||
<AdsALst>1</AdsALst>
|
||||
<AdsACrf>1</AdsACrf>
|
||||
<AdsANop>0</AdsANop>
|
||||
<AdsANot>0</AdsANot>
|
||||
<AdsLLst>1</AdsLLst>
|
||||
<AdsLmap>1</AdsLmap>
|
||||
<AdsLcgr>1</AdsLcgr>
|
||||
<AdsLsym>1</AdsLsym>
|
||||
<AdsLszi>1</AdsLszi>
|
||||
<AdsLtoi>1</AdsLtoi>
|
||||
<AdsLsun>1</AdsLsun>
|
||||
<AdsLven>1</AdsLven>
|
||||
<AdsLsxf>1</AdsLsxf>
|
||||
<RvctClst>0</RvctClst>
|
||||
<GenPPlst>0</GenPPlst>
|
||||
<AdsCpuType>"Cortex-M4"</AdsCpuType>
|
||||
<RvctDeviceName></RvctDeviceName>
|
||||
<mOS>0</mOS>
|
||||
<uocRom>0</uocRom>
|
||||
<uocRam>0</uocRam>
|
||||
<hadIROM>1</hadIROM>
|
||||
<hadIRAM>1</hadIRAM>
|
||||
<hadXRAM>0</hadXRAM>
|
||||
<uocXRam>0</uocXRam>
|
||||
<RvdsVP>2</RvdsVP>
|
||||
<RvdsMve>0</RvdsMve>
|
||||
<hadIRAM2>0</hadIRAM2>
|
||||
<hadIROM2>0</hadIROM2>
|
||||
<StupSel>8</StupSel>
|
||||
<useUlib>1</useUlib>
|
||||
<EndSel>0</EndSel>
|
||||
<uLtcg>0</uLtcg>
|
||||
<nSecure>0</nSecure>
|
||||
<RoSelD>3</RoSelD>
|
||||
<RwSelD>3</RwSelD>
|
||||
<CodeSel>0</CodeSel>
|
||||
<OptFeed>0</OptFeed>
|
||||
<NoZi1>0</NoZi1>
|
||||
<NoZi2>0</NoZi2>
|
||||
<NoZi3>0</NoZi3>
|
||||
<NoZi4>0</NoZi4>
|
||||
<NoZi5>0</NoZi5>
|
||||
<Ro1Chk>0</Ro1Chk>
|
||||
<Ro2Chk>0</Ro2Chk>
|
||||
<Ro3Chk>0</Ro3Chk>
|
||||
<Ir1Chk>1</Ir1Chk>
|
||||
<Ir2Chk>0</Ir2Chk>
|
||||
<Ra1Chk>0</Ra1Chk>
|
||||
<Ra2Chk>0</Ra2Chk>
|
||||
<Ra3Chk>0</Ra3Chk>
|
||||
<Im1Chk>1</Im1Chk>
|
||||
<Im2Chk>0</Im2Chk>
|
||||
<OnChipMemories>
|
||||
<Ocm1>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm1>
|
||||
<Ocm2>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm2>
|
||||
<Ocm3>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm3>
|
||||
<Ocm4>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm4>
|
||||
<Ocm5>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm5>
|
||||
<Ocm6>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm6>
|
||||
<IRAM>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x20000000</StartAddress>
|
||||
<Size>0x10000</Size>
|
||||
</IRAM>
|
||||
<IROM>
|
||||
<Type>1</Type>
|
||||
<StartAddress>0x8000000</StartAddress>
|
||||
<Size>0x40000</Size>
|
||||
</IROM>
|
||||
<XRAM>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRAM>
|
||||
<OCR_RVCT1>
|
||||
<Type>1</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</OCR_RVCT1>
|
||||
<OCR_RVCT2>
|
||||
<Type>1</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</OCR_RVCT2>
|
||||
<OCR_RVCT3>
|
||||
<Type>1</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</OCR_RVCT3>
|
||||
<OCR_RVCT4>
|
||||
<Type>1</Type>
|
||||
<StartAddress>0x8000000</StartAddress>
|
||||
<Size>0x40000</Size>
|
||||
</OCR_RVCT4>
|
||||
<OCR_RVCT5>
|
||||
<Type>1</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</OCR_RVCT5>
|
||||
<OCR_RVCT6>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</OCR_RVCT6>
|
||||
<OCR_RVCT7>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</OCR_RVCT7>
|
||||
<OCR_RVCT8>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</OCR_RVCT8>
|
||||
<OCR_RVCT9>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x20000000</StartAddress>
|
||||
<Size>0x10000</Size>
|
||||
</OCR_RVCT9>
|
||||
<OCR_RVCT10>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</OCR_RVCT10>
|
||||
</OnChipMemories>
|
||||
<RvctStartVector></RvctStartVector>
|
||||
</ArmAdsMisc>
|
||||
<Cads>
|
||||
<interw>1</interw>
|
||||
<Optim>1</Optim>
|
||||
<oTime>0</oTime>
|
||||
<SplitLS>0</SplitLS>
|
||||
<OneElfS>1</OneElfS>
|
||||
<Strict>0</Strict>
|
||||
<EnumInt>0</EnumInt>
|
||||
<PlainCh>0</PlainCh>
|
||||
<Ropi>0</Ropi>
|
||||
<Rwpi>0</Rwpi>
|
||||
<wLevel>2</wLevel>
|
||||
<uThumb>0</uThumb>
|
||||
<uSurpInc>0</uSurpInc>
|
||||
<uC99>1</uC99>
|
||||
<uGnu>0</uGnu>
|
||||
<useXO>0</useXO>
|
||||
<v6Lang>1</v6Lang>
|
||||
<v6LangP>1</v6LangP>
|
||||
<vShortEn>1</vShortEn>
|
||||
<vShortWch>1</vShortWch>
|
||||
<v6Lto>0</v6Lto>
|
||||
<v6WtE>0</v6WtE>
|
||||
<v6Rtti>0</v6Rtti>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define>USE_HAL_DRIVER,STM32L431xx,WITH_TOS_NET_ADAPTER,USE_ESP8266</Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath>..\..\BSP\Inc;..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Inc;..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Legacy;..\..\..\..\platform\vendor_bsp\st\CMSIS\Device\ST\STM32L4xx\Include;..\..\..\..\platform\vendor_bsp\st\CMSIS\Include;..\..\..\..\kernel\core\include;..\..\TOS-CONFIG;..\..\..\..\platform\arch\arm\cortex-m4\keil;..\..\..\..\kernel\pm\include;..\..\..\..\osal\cmsis_os;..\..\..\..\arch\arm\arm-v7m\common\include;..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc;..\..\..\..\net\at\include;..\..\..\..\kernel\hal\include;..\..\BSP\Hardware\LCD_ST7789;..\..\BSP\Hardware\BH1750;..\..\..\..\examples\fatfs_through_vfs;..\..\..\..\components\fs\vfs\include;..\..\..\..\components\fs\fatfs\wrapper\include;..\..\..\..\components\fs\fatfs\3rdparty</IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
<Aads>
|
||||
<interw>1</interw>
|
||||
<Ropi>0</Ropi>
|
||||
<Rwpi>0</Rwpi>
|
||||
<thumb>0</thumb>
|
||||
<SplitLS>0</SplitLS>
|
||||
<SwStkChk>0</SwStkChk>
|
||||
<NoWarn>0</NoWarn>
|
||||
<uSurpInc>0</uSurpInc>
|
||||
<useXO>0</useXO>
|
||||
<uClangAs>0</uClangAs>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Aads>
|
||||
<LDads>
|
||||
<umfTarg>1</umfTarg>
|
||||
<Ropi>0</Ropi>
|
||||
<Rwpi>0</Rwpi>
|
||||
<noStLib>0</noStLib>
|
||||
<RepFail>1</RepFail>
|
||||
<useFile>0</useFile>
|
||||
<TextAddressRange>0x08000000</TextAddressRange>
|
||||
<DataAddressRange>0x20000000</DataAddressRange>
|
||||
<pXoBase></pXoBase>
|
||||
<ScatterFile></ScatterFile>
|
||||
<IncludeLibs></IncludeLibs>
|
||||
<IncludeLibsPath></IncludeLibsPath>
|
||||
<Misc></Misc>
|
||||
<LinkerInputFile></LinkerInputFile>
|
||||
<DisabledWarnings></DisabledWarnings>
|
||||
</LDads>
|
||||
</TargetArmAds>
|
||||
</TargetOption>
|
||||
<Groups>
|
||||
<Group>
|
||||
<GroupName>Application/MDK-ARM</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>startup_stm32l431xx.s</FileName>
|
||||
<FileType>2</FileType>
|
||||
<FilePath>startup_stm32l431xx.s</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>Application/User</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>gpio.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\BSP\Src\gpio.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>main.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\BSP\Src\main.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mcu_init.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\BSP\Src\mcu_init.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_msp.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\BSP\Src\stm32l4xx_hal_msp.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_it.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\BSP\Src\stm32l4xx_it.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>usart.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\BSP\Src\usart.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>adc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\BSP\Src\adc.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>i2c.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\BSP\Src\i2c.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>spi.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\BSP\Src\spi.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>sdmmc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\BSP\Src\sdmmc.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>examples</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>fatfs_through_vfs_sample.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\examples\fatfs_through_vfs\fatfs_through_vfs_sample.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>Drivers/STM32L4xx_HAL_Driver</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_tim.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_tim.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_tim_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_tim_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_uart.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_uart.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_uart_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_uart_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_i2c.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_i2c.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_i2c_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_i2c_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_rcc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rcc.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_rcc_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_rcc_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_flash.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_flash.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_flash_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_flash_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_flash_ramfunc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_flash_ramfunc.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_gpio.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_gpio.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_dma.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dma.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_dma_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dma_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_pwr.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_pwr.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_pwr_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_pwr_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_cortex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_cortex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_adc_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_adc_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_adc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_adc.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_dac.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dac.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_dac_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_dac_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_spi.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_spi.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_spi_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_spi_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_sd.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_sd.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_hal_sd_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_sd_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32l4xx_ll_sdmmc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\vendor_bsp\st\STM32L4xx_HAL_Driver\Src\stm32l4xx_ll_sdmmc.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>Drivers/CMSIS</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>system_stm32l4xx.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\BSP\Src\system_stm32l4xx.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>Hardware</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>BH1750.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\BSP\Hardware\BH1750\BH1750.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>lcd_spi2_drv.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\BSP\Hardware\LCD_ST7789\lcd_spi2_drv.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>kernel</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>tos_mmblk.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_mmblk.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_mmheap.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_mmheap.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_mutex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_mutex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_sched.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_sched.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_sem.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_sem.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_sys.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_sys.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_task.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_task.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_tick.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_tick.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_time.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_time.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_timer.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_timer.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_event.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_event.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_global.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_global.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_pend.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_pend.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_robin.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_robin.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_binary_heap.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_binary_heap.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_char_fifo.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_char_fifo.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_completion.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_completion.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_countdownlatch.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_countdownlatch.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_mail_queue.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_mail_queue.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_message_queue.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_message_queue.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_priority_mail_queue.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_priority_mail_queue.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_priority_message_queue.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_priority_message_queue.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_priority_queue.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_priority_queue.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_ring_queue.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\kernel\core\tos_ring_queue.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>cpu</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>port_s.S</FileName>
|
||||
<FileType>2</FileType>
|
||||
<FilePath>..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc\port_s.S</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_cpu.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\arch\arm\arm-v7m\common\tos_cpu.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>port_c.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc\port_c.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>config</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>tos_config.h</FileName>
|
||||
<FileType>5</FileType>
|
||||
<FilePath>..\..\TOS-CONFIG\tos_config.h</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>fatfs</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>tos_diskio.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\components\fs\fatfs\wrapper\tos_diskio.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_fatfs_drv.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\components\fs\fatfs\wrapper\tos_fatfs_drv.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_fatfs_vfs.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\components\fs\fatfs\wrapper\tos_fatfs_vfs.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_ff.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\components\fs\fatfs\wrapper\tos_ff.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_ffsystem.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\components\fs\fatfs\wrapper\tos_ffsystem.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_ffunicode.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\components\fs\fatfs\wrapper\tos_ffunicode.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>vfs</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>tos_vfs.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\components\fs\vfs\tos_vfs.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_vfs_device.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\components\fs\vfs\tos_vfs_device.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_vfs_file.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\components\fs\vfs\tos_vfs_file.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_vfs_fs.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\components\fs\vfs\tos_vfs_fs.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tos_vfs_inode.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\components\fs\vfs\tos_vfs_inode.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>hal</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>tos_hal_sd.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\..\..\platform\hal\st\stm32l4xx\src\tos_hal_sd.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>::CMSIS</GroupName>
|
||||
</Group>
|
||||
</Groups>
|
||||
</Target>
|
||||
</Targets>
|
||||
|
||||
<RTE>
|
||||
<apis/>
|
||||
<components>
|
||||
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="4.3.0" condition="CMSIS Core">
|
||||
<package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.5.0"/>
|
||||
<targetInfos>
|
||||
<targetInfo name="TencentOS_tiny"/>
|
||||
</targetInfos>
|
||||
</component>
|
||||
</components>
|
||||
<files/>
|
||||
</RTE>
|
||||
|
||||
</Project>
|
||||
|
|
@ -1,404 +0,0 @@
|
|||
;********************** COPYRIGHT(c) 2017 STMicroelectronics ******************
|
||||
;* File Name : startup_stm32l431xx.s
|
||||
;* Author : MCD Application Team
|
||||
;* Description : STM32L431xx Ultra Low Power devices vector table for MDK-ARM toolchain.
|
||||
;* This module performs:
|
||||
;* - Set the initial SP
|
||||
;* - Set the initial PC == Reset_Handler
|
||||
;* - Set the vector table entries with the exceptions ISR address
|
||||
;* - Branches to __main in the C library (which eventually
|
||||
;* calls main()).
|
||||
;* After Reset the Cortex-M4 processor is in Thread mode,
|
||||
;* priority is Privileged, and the Stack is set to Main.
|
||||
;* <<< Use Configuration Wizard in Context Menu >>>
|
||||
;*******************************************************************************
|
||||
;*
|
||||
;* Redistribution and use in source and binary forms, with or without modification,
|
||||
;* are permitted provided that the following conditions are met:
|
||||
;* 1. Redistributions of source code must retain the above copyright notice,
|
||||
;* this list of conditions and the following disclaimer.
|
||||
;* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
;* this list of conditions and the following disclaimer in the documentation
|
||||
;* and/or other materials provided with the distribution.
|
||||
;* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||
;* may be used to endorse or promote products derived from this software
|
||||
;* without specific prior written permission.
|
||||
;*
|
||||
;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
;*
|
||||
;*******************************************************************************
|
||||
;
|
||||
; Amount of memory (in bytes) allocated for Stack
|
||||
; Tailor this value to your application needs
|
||||
; <h> Stack Configuration
|
||||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||
; </h>
|
||||
|
||||
Stack_Size EQU 0x100
|
||||
|
||||
AREA STACK, NOINIT, READWRITE, ALIGN=3
|
||||
Stack_Mem SPACE Stack_Size
|
||||
__initial_sp
|
||||
|
||||
|
||||
; <h> Heap Configuration
|
||||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||
; </h>
|
||||
|
||||
Heap_Size EQU 0x100
|
||||
|
||||
AREA HEAP, NOINIT, READWRITE, ALIGN=3
|
||||
__heap_base
|
||||
Heap_Mem SPACE Heap_Size
|
||||
__heap_limit
|
||||
|
||||
PRESERVE8
|
||||
THUMB
|
||||
|
||||
|
||||
; Vector Table Mapped to Address 0 at Reset
|
||||
AREA RESET, DATA, READONLY
|
||||
EXPORT __Vectors
|
||||
EXPORT __Vectors_End
|
||||
EXPORT __Vectors_Size
|
||||
|
||||
__Vectors DCD __initial_sp ; Top of Stack
|
||||
DCD Reset_Handler ; Reset Handler
|
||||
DCD NMI_Handler ; NMI Handler
|
||||
DCD HardFault_Handler ; Hard Fault Handler
|
||||
DCD MemManage_Handler ; MPU Fault Handler
|
||||
DCD BusFault_Handler ; Bus Fault Handler
|
||||
DCD UsageFault_Handler ; Usage Fault Handler
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD SVC_Handler ; SVCall Handler
|
||||
DCD DebugMon_Handler ; Debug Monitor Handler
|
||||
DCD 0 ; Reserved
|
||||
DCD PendSV_Handler ; PendSV Handler
|
||||
DCD SysTick_Handler ; SysTick Handler
|
||||
|
||||
; External Interrupts
|
||||
DCD WWDG_IRQHandler ; Window WatchDog
|
||||
DCD PVD_PVM_IRQHandler ; PVD/PVM1/PVM2/PVM3/PVM4 through EXTI Line detection
|
||||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line
|
||||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line
|
||||
DCD FLASH_IRQHandler ; FLASH
|
||||
DCD RCC_IRQHandler ; RCC
|
||||
DCD EXTI0_IRQHandler ; EXTI Line0
|
||||
DCD EXTI1_IRQHandler ; EXTI Line1
|
||||
DCD EXTI2_IRQHandler ; EXTI Line2
|
||||
DCD EXTI3_IRQHandler ; EXTI Line3
|
||||
DCD EXTI4_IRQHandler ; EXTI Line4
|
||||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1
|
||||
DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2
|
||||
DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3
|
||||
DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4
|
||||
DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5
|
||||
DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6
|
||||
DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7
|
||||
DCD ADC1_IRQHandler ; ADC1
|
||||
DCD CAN1_TX_IRQHandler ; CAN1 TX
|
||||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0
|
||||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1
|
||||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE
|
||||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s
|
||||
DCD TIM1_BRK_TIM15_IRQHandler ; TIM1 Break and TIM15
|
||||
DCD TIM1_UP_TIM16_IRQHandler ; TIM1 Update and TIM16
|
||||
DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation
|
||||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
|
||||
DCD TIM2_IRQHandler ; TIM2
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD I2C1_EV_IRQHandler ; I2C1 Event
|
||||
DCD I2C1_ER_IRQHandler ; I2C1 Error
|
||||
DCD I2C2_EV_IRQHandler ; I2C2 Event
|
||||
DCD I2C2_ER_IRQHandler ; I2C2 Error
|
||||
DCD SPI1_IRQHandler ; SPI1
|
||||
DCD SPI2_IRQHandler ; SPI2
|
||||
DCD USART1_IRQHandler ; USART1
|
||||
DCD USART2_IRQHandler ; USART2
|
||||
DCD USART3_IRQHandler ; USART3
|
||||
DCD EXTI15_10_IRQHandler ; External Line[15:10]
|
||||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD SDMMC1_IRQHandler ; SDMMC1
|
||||
DCD 0 ; Reserved
|
||||
DCD SPI3_IRQHandler ; SPI3
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors
|
||||
DCD TIM7_IRQHandler ; TIM7
|
||||
DCD DMA2_Channel1_IRQHandler ; DMA2 Channel 1
|
||||
DCD DMA2_Channel2_IRQHandler ; DMA2 Channel 2
|
||||
DCD DMA2_Channel3_IRQHandler ; DMA2 Channel 3
|
||||
DCD DMA2_Channel4_IRQHandler ; DMA2 Channel 4
|
||||
DCD DMA2_Channel5_IRQHandler ; DMA2 Channel 5
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD COMP_IRQHandler ; COMP Interrupt
|
||||
DCD LPTIM1_IRQHandler ; LP TIM1 interrupt
|
||||
DCD LPTIM2_IRQHandler ; LP TIM2 interrupt
|
||||
DCD 0 ; Reserved
|
||||
DCD DMA2_Channel6_IRQHandler ; DMA2 Channel 6
|
||||
DCD DMA2_Channel7_IRQHandler ; DMA2 Channel 7
|
||||
DCD LPUART1_IRQHandler ; LP UART1 interrupt
|
||||
DCD QUADSPI_IRQHandler ; Quad SPI global interrupt
|
||||
DCD I2C3_EV_IRQHandler ; I2C3 event
|
||||
DCD I2C3_ER_IRQHandler ; I2C3 error
|
||||
DCD SAI1_IRQHandler ; Serial Audio Interface 1 global interrupt
|
||||
DCD 0 ; Reserved
|
||||
DCD SWPMI1_IRQHandler ; Serial Wire Interface 1 global interrupt
|
||||
DCD TSC_IRQHandler ; Touch Sense Controller global interrupt
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD RNG_IRQHandler ; RNG global interrupt
|
||||
DCD FPU_IRQHandler ; FPU
|
||||
DCD CRS_IRQHandler ; CRS interrupt
|
||||
|
||||
__Vectors_End
|
||||
|
||||
__Vectors_Size EQU __Vectors_End - __Vectors
|
||||
|
||||
AREA |.text|, CODE, READONLY
|
||||
|
||||
; Reset handler
|
||||
Reset_Handler PROC
|
||||
EXPORT Reset_Handler [WEAK]
|
||||
IMPORT SystemInit
|
||||
IMPORT __main
|
||||
|
||||
LDR R0, =SystemInit
|
||||
BLX R0
|
||||
LDR R0, =__main
|
||||
BX R0
|
||||
ENDP
|
||||
|
||||
; Dummy Exception Handlers (infinite loops which can be modified)
|
||||
|
||||
NMI_Handler PROC
|
||||
EXPORT NMI_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
HardFault_Handler\
|
||||
PROC
|
||||
EXPORT HardFault_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
MemManage_Handler\
|
||||
PROC
|
||||
EXPORT MemManage_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
BusFault_Handler\
|
||||
PROC
|
||||
EXPORT BusFault_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
UsageFault_Handler\
|
||||
PROC
|
||||
EXPORT UsageFault_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
SVC_Handler PROC
|
||||
EXPORT SVC_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
DebugMon_Handler\
|
||||
PROC
|
||||
EXPORT DebugMon_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
PendSV_Handler PROC
|
||||
EXPORT PendSV_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
SysTick_Handler PROC
|
||||
EXPORT SysTick_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
|
||||
Default_Handler PROC
|
||||
|
||||
EXPORT WWDG_IRQHandler [WEAK]
|
||||
EXPORT PVD_PVM_IRQHandler [WEAK]
|
||||
EXPORT TAMP_STAMP_IRQHandler [WEAK]
|
||||
EXPORT RTC_WKUP_IRQHandler [WEAK]
|
||||
EXPORT FLASH_IRQHandler [WEAK]
|
||||
EXPORT RCC_IRQHandler [WEAK]
|
||||
EXPORT EXTI0_IRQHandler [WEAK]
|
||||
EXPORT EXTI1_IRQHandler [WEAK]
|
||||
EXPORT EXTI2_IRQHandler [WEAK]
|
||||
EXPORT EXTI3_IRQHandler [WEAK]
|
||||
EXPORT EXTI4_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel1_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel2_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel3_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel4_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel5_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel6_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel7_IRQHandler [WEAK]
|
||||
EXPORT ADC1_IRQHandler [WEAK]
|
||||
EXPORT CAN1_TX_IRQHandler [WEAK]
|
||||
EXPORT CAN1_RX0_IRQHandler [WEAK]
|
||||
EXPORT CAN1_RX1_IRQHandler [WEAK]
|
||||
EXPORT CAN1_SCE_IRQHandler [WEAK]
|
||||
EXPORT EXTI9_5_IRQHandler [WEAK]
|
||||
EXPORT TIM1_BRK_TIM15_IRQHandler [WEAK]
|
||||
EXPORT TIM1_UP_TIM16_IRQHandler [WEAK]
|
||||
EXPORT TIM1_TRG_COM_IRQHandler [WEAK]
|
||||
EXPORT TIM1_CC_IRQHandler [WEAK]
|
||||
EXPORT TIM2_IRQHandler [WEAK]
|
||||
EXPORT I2C1_EV_IRQHandler [WEAK]
|
||||
EXPORT I2C1_ER_IRQHandler [WEAK]
|
||||
EXPORT I2C2_EV_IRQHandler [WEAK]
|
||||
EXPORT I2C2_ER_IRQHandler [WEAK]
|
||||
EXPORT SPI1_IRQHandler [WEAK]
|
||||
EXPORT SPI2_IRQHandler [WEAK]
|
||||
EXPORT USART1_IRQHandler [WEAK]
|
||||
EXPORT USART2_IRQHandler [WEAK]
|
||||
EXPORT USART3_IRQHandler [WEAK]
|
||||
EXPORT EXTI15_10_IRQHandler [WEAK]
|
||||
EXPORT RTC_Alarm_IRQHandler [WEAK]
|
||||
EXPORT SDMMC1_IRQHandler [WEAK]
|
||||
EXPORT SPI3_IRQHandler [WEAK]
|
||||
EXPORT TIM6_DAC_IRQHandler [WEAK]
|
||||
EXPORT TIM7_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel1_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel2_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel3_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel4_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel5_IRQHandler [WEAK]
|
||||
EXPORT COMP_IRQHandler [WEAK]
|
||||
EXPORT LPTIM1_IRQHandler [WEAK]
|
||||
EXPORT LPTIM2_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel6_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel7_IRQHandler [WEAK]
|
||||
EXPORT LPUART1_IRQHandler [WEAK]
|
||||
EXPORT QUADSPI_IRQHandler [WEAK]
|
||||
EXPORT I2C3_EV_IRQHandler [WEAK]
|
||||
EXPORT I2C3_ER_IRQHandler [WEAK]
|
||||
EXPORT SAI1_IRQHandler [WEAK]
|
||||
EXPORT SWPMI1_IRQHandler [WEAK]
|
||||
EXPORT TSC_IRQHandler [WEAK]
|
||||
EXPORT RNG_IRQHandler [WEAK]
|
||||
EXPORT FPU_IRQHandler [WEAK]
|
||||
EXPORT CRS_IRQHandler [WEAK]
|
||||
|
||||
WWDG_IRQHandler
|
||||
PVD_PVM_IRQHandler
|
||||
TAMP_STAMP_IRQHandler
|
||||
RTC_WKUP_IRQHandler
|
||||
FLASH_IRQHandler
|
||||
RCC_IRQHandler
|
||||
EXTI0_IRQHandler
|
||||
EXTI1_IRQHandler
|
||||
EXTI2_IRQHandler
|
||||
EXTI3_IRQHandler
|
||||
EXTI4_IRQHandler
|
||||
DMA1_Channel1_IRQHandler
|
||||
DMA1_Channel2_IRQHandler
|
||||
DMA1_Channel3_IRQHandler
|
||||
DMA1_Channel4_IRQHandler
|
||||
DMA1_Channel5_IRQHandler
|
||||
DMA1_Channel6_IRQHandler
|
||||
DMA1_Channel7_IRQHandler
|
||||
ADC1_IRQHandler
|
||||
CAN1_TX_IRQHandler
|
||||
CAN1_RX0_IRQHandler
|
||||
CAN1_RX1_IRQHandler
|
||||
CAN1_SCE_IRQHandler
|
||||
EXTI9_5_IRQHandler
|
||||
TIM1_BRK_TIM15_IRQHandler
|
||||
TIM1_UP_TIM16_IRQHandler
|
||||
TIM1_TRG_COM_IRQHandler
|
||||
TIM1_CC_IRQHandler
|
||||
TIM2_IRQHandler
|
||||
I2C1_EV_IRQHandler
|
||||
I2C1_ER_IRQHandler
|
||||
I2C2_EV_IRQHandler
|
||||
I2C2_ER_IRQHandler
|
||||
SPI1_IRQHandler
|
||||
SPI2_IRQHandler
|
||||
USART1_IRQHandler
|
||||
USART2_IRQHandler
|
||||
USART3_IRQHandler
|
||||
EXTI15_10_IRQHandler
|
||||
RTC_Alarm_IRQHandler
|
||||
SDMMC1_IRQHandler
|
||||
SPI3_IRQHandler
|
||||
TIM6_DAC_IRQHandler
|
||||
TIM7_IRQHandler
|
||||
DMA2_Channel1_IRQHandler
|
||||
DMA2_Channel2_IRQHandler
|
||||
DMA2_Channel3_IRQHandler
|
||||
DMA2_Channel4_IRQHandler
|
||||
DMA2_Channel5_IRQHandler
|
||||
COMP_IRQHandler
|
||||
LPTIM1_IRQHandler
|
||||
LPTIM2_IRQHandler
|
||||
DMA2_Channel6_IRQHandler
|
||||
DMA2_Channel7_IRQHandler
|
||||
LPUART1_IRQHandler
|
||||
QUADSPI_IRQHandler
|
||||
I2C3_EV_IRQHandler
|
||||
I2C3_ER_IRQHandler
|
||||
SAI1_IRQHandler
|
||||
SWPMI1_IRQHandler
|
||||
TSC_IRQHandler
|
||||
RNG_IRQHandler
|
||||
FPU_IRQHandler
|
||||
CRS_IRQHandler
|
||||
|
||||
B .
|
||||
|
||||
ENDP
|
||||
|
||||
ALIGN
|
||||
|
||||
;*******************************************************************************
|
||||
; User Stack and Heap initialization
|
||||
;*******************************************************************************
|
||||
IF :DEF:__MICROLIB
|
||||
|
||||
EXPORT __initial_sp
|
||||
EXPORT __heap_base
|
||||
EXPORT __heap_limit
|
||||
|
||||
ELSE
|
||||
|
||||
IMPORT __use_two_region_memory
|
||||
EXPORT __user_initial_stackheap
|
||||
|
||||
__user_initial_stackheap
|
||||
|
||||
LDR R0, = Heap_Mem
|
||||
LDR R1, =(Stack_Mem + Stack_Size)
|
||||
LDR R2, = (Heap_Mem + Heap_Size)
|
||||
LDR R3, = Stack_Mem
|
||||
BX LR
|
||||
|
||||
ALIGN
|
||||
|
||||
ENDIF
|
||||
|
||||
END
|
||||
|
||||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -1,273 +0,0 @@
|
|||
#include "tos_k.h"
|
||||
#include "mp_tos_hal_pin.h"
|
||||
#include "gpio.h"
|
||||
|
||||
#define ST_EXTI_VECTOR_SIZE 16
|
||||
|
||||
#define ST_PORT_NUM(port) ((uint8_t)((port) >> 4) & 0x0F)
|
||||
#define ST_PIN_NUM(port) ((uint8_t)((port) & 0x0F))
|
||||
|
||||
__STATIC__ hal_pin_cb_t hal_pin_irq_handler[ST_EXTI_VECTOR_SIZE];
|
||||
__STATIC__ void *hal_pin_irq_handler_arg[ST_EXTI_VECTOR_SIZE];
|
||||
__STATIC__ GPIO_TypeDef *hal_pin_irq_gpio[ST_EXTI_VECTOR_SIZE];
|
||||
|
||||
__STATIC__ const uint8_t nvic_irq_channel[ST_EXTI_VECTOR_SIZE] = {
|
||||
EXTI0_IRQn, EXTI1_IRQn, EXTI2_IRQn, EXTI3_IRQn,
|
||||
EXTI4_IRQn, EXTI9_5_IRQn, EXTI9_5_IRQn, EXTI9_5_IRQn,
|
||||
EXTI9_5_IRQn, EXTI9_5_IRQn, EXTI15_10_IRQn, EXTI15_10_IRQn,
|
||||
EXTI15_10_IRQn, EXTI15_10_IRQn, EXTI15_10_IRQn, EXTI15_10_IRQn,
|
||||
};
|
||||
|
||||
__STATIC__ int mask2no(uint32_t mask) {
|
||||
for (int i = 0; i < 32; i++) {
|
||||
if ((1U << i) == mask) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
__API__ int tos_hal_pin_init(hal_pin_t *pin, hal_pin_port_t port, hal_pin_mode_t mode)
|
||||
{
|
||||
GPIO_TypeDef *gpiox;
|
||||
uint32_t gpio_pin;
|
||||
GPIO_InitTypeDef gpio_init;
|
||||
|
||||
if (!pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
gpiox = (GPIO_TypeDef *)(GPIOA_BASE + ST_PORT_NUM(port) * 0x0400UL);
|
||||
gpio_pin = 1UL << ST_PIN_NUM(port);
|
||||
|
||||
gpio_init.Pin = gpio_pin;
|
||||
gpio_init.Speed = GPIO_SPEED_FREQ_HIGH;
|
||||
switch (mode) {
|
||||
case HAL_PIN_MODE_OUTPUT:
|
||||
gpio_init.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
gpio_init.Pull = GPIO_NOPULL;
|
||||
break;
|
||||
case HAL_PIN_MODE_OUTPUT_OD:
|
||||
gpio_init.Mode = GPIO_MODE_OUTPUT_OD;
|
||||
gpio_init.Pull = GPIO_NOPULL;
|
||||
break;
|
||||
case HAL_PIN_MODE_INPUT:
|
||||
gpio_init.Mode = GPIO_MODE_INPUT;
|
||||
gpio_init.Pull = GPIO_NOPULL;
|
||||
break;
|
||||
case HAL_PIN_MODE_INPUT_PULLUP:
|
||||
gpio_init.Mode = GPIO_MODE_INPUT;
|
||||
gpio_init.Pull = GPIO_PULLUP;
|
||||
break;
|
||||
case HAL_PIN_MODE_INPUT_PULLDOWN:
|
||||
gpio_init.Mode = GPIO_MODE_INPUT;
|
||||
gpio_init.Pull = GPIO_PULLDOWN;
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
HAL_GPIO_Init((GPIO_TypeDef *)gpiox, &gpio_init);
|
||||
|
||||
pin->port = port;
|
||||
pin->private_gpio = gpiox;
|
||||
pin->private_pin = gpio_pin;
|
||||
pin->mode = mode;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
__API__ int tos_hal_pin_irq(hal_pin_t *pin, hal_pin_irq_t irq)
|
||||
{
|
||||
GPIO_TypeDef *gpiox;
|
||||
uint32_t gpio_pin;
|
||||
uint32_t gpio_pin_num;
|
||||
GPIO_InitTypeDef gpio_init;
|
||||
TOS_CPU_CPSR_ALLOC();
|
||||
|
||||
if (!pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!pin->private_gpio || !pin->private_pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
gpiox = (GPIO_TypeDef *)pin->private_gpio;
|
||||
gpio_pin = (uint32_t)pin->private_pin;
|
||||
gpio_pin_num = mask2no(gpio_pin);
|
||||
if (gpio_pin_num >= ST_EXTI_VECTOR_SIZE) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
TOS_CPU_INT_DISABLE();
|
||||
if (hal_pin_irq_gpio[gpio_pin_num] != NULL && hal_pin_irq_gpio[gpio_pin_num] != gpiox) {
|
||||
TOS_CPU_INT_ENABLE();
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (irq == HAL_PIN_IRQ_NONE) {
|
||||
hal_pin_irq_gpio[gpio_pin_num] = NULL;
|
||||
hal_pin_irq_handler[gpio_pin_num] = NULL;
|
||||
hal_pin_irq_handler_arg[gpio_pin_num] = NULL;
|
||||
TOS_CPU_INT_ENABLE();
|
||||
HAL_NVIC_DisableIRQ(nvic_irq_channel[gpio_pin_num]);
|
||||
} else {
|
||||
hal_pin_irq_gpio[gpio_pin_num] = gpiox;
|
||||
TOS_CPU_INT_ENABLE();
|
||||
gpio_init.Pin = gpio_pin;
|
||||
gpio_init.Speed = GPIO_SPEED_FREQ_HIGH;
|
||||
gpio_init.Mode = GPIO_MODE_IT_RISING_FALLING;
|
||||
switch (irq) {
|
||||
case HAL_PIN_IRQ_RISING:
|
||||
gpio_init.Mode = GPIO_MODE_IT_RISING;
|
||||
break;
|
||||
case HAL_PIN_IRQ_FALLING:
|
||||
gpio_init.Mode = GPIO_MODE_IT_FALLING;
|
||||
break;
|
||||
case HAL_PIN_IRQ_RISING_FALLING:
|
||||
gpio_init.Mode = GPIO_MODE_IT_RISING_FALLING;
|
||||
break;
|
||||
}
|
||||
switch (pin->mode) {
|
||||
case HAL_PIN_MODE_INPUT_PULLUP:
|
||||
gpio_init.Pull = GPIO_PULLUP;
|
||||
break;
|
||||
case HAL_PIN_MODE_INPUT_PULLDOWN:
|
||||
gpio_init.Pull = GPIO_PULLDOWN;
|
||||
break;
|
||||
default:
|
||||
gpio_init.Pull = GPIO_NOPULL;
|
||||
break;
|
||||
}
|
||||
HAL_GPIO_Init(gpiox, &gpio_init);
|
||||
HAL_NVIC_SetPriority(nvic_irq_channel[gpio_pin_num], 2, 0);
|
||||
HAL_NVIC_EnableIRQ(nvic_irq_channel[gpio_pin_num]);
|
||||
|
||||
pin->irq = irq;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
__API__ int tos_hal_pin_irq_callback(hal_pin_t *pin, hal_pin_cb_t callback, void *cb_arg)
|
||||
{
|
||||
GPIO_TypeDef *gpiox;
|
||||
uint32_t gpio_pin;
|
||||
uint32_t gpio_pin_num;
|
||||
TOS_CPU_CPSR_ALLOC();
|
||||
|
||||
if (!pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!pin->private_gpio || !pin->private_pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
gpiox = (GPIO_TypeDef *)pin->private_gpio;
|
||||
gpio_pin = (uint32_t)pin->private_pin;
|
||||
gpio_pin_num = mask2no(gpio_pin);
|
||||
if (gpio_pin_num >= ST_EXTI_VECTOR_SIZE) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
TOS_CPU_INT_DISABLE();
|
||||
if (hal_pin_irq_gpio[gpio_pin_num] != NULL && hal_pin_irq_gpio[gpio_pin_num] != gpiox) {
|
||||
TOS_CPU_INT_ENABLE();
|
||||
return -1;
|
||||
}
|
||||
hal_pin_irq_handler[gpio_pin_num] = gpiox;
|
||||
hal_pin_irq_handler[gpio_pin_num] = callback;
|
||||
hal_pin_irq_handler_arg[gpio_pin_num] = cb_arg;
|
||||
TOS_CPU_INT_ENABLE();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
__API__ int tos_hal_pin_write(hal_pin_t *pin, int state)
|
||||
{
|
||||
GPIO_TypeDef *gpiox;
|
||||
uint32_t gpio_pin;
|
||||
|
||||
if (!pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!pin->private_gpio || !pin->private_pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
gpiox = (GPIO_TypeDef *)pin->private_gpio;
|
||||
gpio_pin = (uint32_t)pin->private_pin;
|
||||
|
||||
HAL_GPIO_WritePin(gpiox, gpio_pin, (state == 0) ? GPIO_PIN_RESET : GPIO_PIN_SET);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
__API__ int tos_hal_pin_read(hal_pin_t *pin)
|
||||
{
|
||||
GPIO_TypeDef *gpiox;
|
||||
uint32_t gpio_pin;
|
||||
|
||||
if (!pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!pin->private_gpio || !pin->private_pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
gpiox = (GPIO_TypeDef *)pin->private_gpio;
|
||||
gpio_pin = (uint32_t)pin->private_pin;
|
||||
|
||||
return (HAL_GPIO_ReadPin(gpiox, gpio_pin) == GPIO_PIN_RESET) ? 0 : 1;
|
||||
}
|
||||
|
||||
__API__ int tos_hal_pin_deinit(hal_pin_t *pin)
|
||||
{
|
||||
GPIO_TypeDef *gpiox;
|
||||
uint32_t gpio_pin;
|
||||
uint32_t gpio_pin_num;
|
||||
TOS_CPU_CPSR_ALLOC();
|
||||
|
||||
if (!pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!pin->private_gpio || !pin->private_pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
gpiox = (GPIO_TypeDef *)pin->private_gpio;
|
||||
gpio_pin = (uint32_t)pin->private_pin;
|
||||
gpio_pin_num = mask2no(gpio_pin);
|
||||
|
||||
TOS_CPU_INT_DISABLE();
|
||||
if (hal_pin_irq_gpio[gpio_pin_num] == gpiox) {
|
||||
hal_pin_irq_gpio[gpio_pin_num] = NULL;
|
||||
hal_pin_irq_handler[gpio_pin_num] = NULL;
|
||||
hal_pin_irq_handler_arg[gpio_pin_num] = NULL;
|
||||
}
|
||||
TOS_CPU_INT_ENABLE();
|
||||
HAL_GPIO_DeInit(gpiox, gpio_pin);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
|
||||
{
|
||||
uint32_t gpio_pin_num = mask2no(GPIO_Pin);
|
||||
hal_pin_cb_t callback;
|
||||
uint32_t cb_arg;
|
||||
if (gpio_pin_num < ST_EXTI_VECTOR_SIZE) {
|
||||
|
||||
callback = hal_pin_irq_handler[gpio_pin_num];
|
||||
cb_arg = hal_pin_irq_handler_arg[gpio_pin_num];
|
||||
if (callback) {
|
||||
callback(cb_arg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
#ifndef _TOS_HAL_PIN_H_
|
||||
#define _TOS_HAL_PIN_H_
|
||||
|
||||
typedef unsigned char hal_pin_port_t;
|
||||
|
||||
typedef enum hal_pin_mode_en {
|
||||
HAL_PIN_MODE_OUTPUT = 0,
|
||||
HAL_PIN_MODE_OUTPUT_OD,
|
||||
HAL_PIN_MODE_INPUT,
|
||||
HAL_PIN_MODE_INPUT_PULLUP,
|
||||
HAL_PIN_MODE_INPUT_PULLDOWN,
|
||||
} hal_pin_mode_t;
|
||||
|
||||
typedef enum hal_pin_irq_en {
|
||||
HAL_PIN_IRQ_NONE = 0x00,
|
||||
HAL_PIN_IRQ_RISING = 0x01,
|
||||
HAL_PIN_IRQ_FALLING = 0x02,
|
||||
HAL_PIN_IRQ_RISING_FALLING = 0x03,
|
||||
} hal_pin_irq_t;
|
||||
|
||||
typedef struct hal_pin_st {
|
||||
hal_pin_port_t port;
|
||||
void *private_gpio;
|
||||
void *private_pin;
|
||||
hal_pin_mode_t mode;
|
||||
hal_pin_irq_t irq;
|
||||
} hal_pin_t;
|
||||
|
||||
|
||||
typedef void (*hal_pin_cb_t)(void *arg);
|
||||
|
||||
__API__ int tos_hal_pin_init(hal_pin_t *pin, hal_pin_port_t port, hal_pin_mode_t mode);
|
||||
|
||||
__API__ int tos_hal_pin_write(hal_pin_t *pin, int state);
|
||||
|
||||
__API__ int tos_hal_pin_read(hal_pin_t *pin);
|
||||
|
||||
__API__ int tos_hal_pin_mode(hal_pin_t *pin, hal_pin_mode_t mode);
|
||||
|
||||
__API__ int tos_hal_pin_irq(hal_pin_t *pin, hal_pin_irq_t irq);
|
||||
|
||||
__API__ int tos_hal_pin_irq_callback(hal_pin_t *pin, hal_pin_cb_t callback, void *cb_arg);
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
#include "tos_k.h"
|
||||
#include "mp_tos_hal_spi.h"
|
||||
#include "stm32l4xx_hal.h"
|
||||
#include "spi.h"
|
||||
|
||||
__API__ int tos_hal_spi_init(hal_spi_t *spi, hal_spi_port_t port)
|
||||
{
|
||||
if (!spi) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (port == HAL_SPI_PORT_1) {
|
||||
spi->private_spi = &hspi1;
|
||||
MX_SPI1_Init();
|
||||
} else if (port == HAL_SPI_PORT_2) {
|
||||
spi->private_spi = &hspi2;
|
||||
MX_SPI2_Init();
|
||||
} else if (port == HAL_SPI_PORT_3) {
|
||||
spi->private_spi = &hspi3;
|
||||
MX_SPI3_Init();
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
__API__ int tos_hal_spi_transfer(hal_spi_t *spi, const uint8_t *send_buf, uint8_t *recv_buf, size_t size, uint32_t timeout)
|
||||
{
|
||||
HAL_StatusTypeDef hal_status;
|
||||
SPI_HandleTypeDef *spi_handle;
|
||||
|
||||
if (!spi || (!send_buf && !recv_buf)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!spi->private_spi) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
spi_handle = (SPI_HandleTypeDef *)spi->private_spi;
|
||||
|
||||
if (send_buf && recv_buf) {
|
||||
hal_status = HAL_SPI_TransmitReceive(spi_handle, send_buf, recv_buf, size, timeout);
|
||||
} else if (send_buf) {
|
||||
hal_status = HAL_SPI_Transmit(spi_handle, send_buf, size, timeout);
|
||||
} else if (recv_buf) {
|
||||
hal_status = HAL_SPI_Receive(spi_handle, send_buf, size, timeout);
|
||||
}
|
||||
|
||||
if (hal_status != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
__API__ int tos_hal_spi_deinit(hal_spi_t *spi)
|
||||
{
|
||||
HAL_StatusTypeDef hal_status;
|
||||
SPI_HandleTypeDef *spi_handle;
|
||||
|
||||
if (!spi) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!spi->private_spi) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
spi_handle = (SPI_HandleTypeDef *)spi->private_spi;
|
||||
|
||||
hal_status = HAL_SPI_DeInit(spi_handle);
|
||||
HAL_SPI_MspDeInit(spi_handle);
|
||||
|
||||
if (hal_status != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
#ifndef _TOS_HAL_SPI_H_
|
||||
#define _TOS_HAL_SPI_H_
|
||||
|
||||
typedef enum hal_spi_port_en {
|
||||
HAL_SPI_PORT_0 = 0,
|
||||
HAL_SPI_PORT_1,
|
||||
HAL_SPI_PORT_2,
|
||||
HAL_SPI_PORT_3,
|
||||
} hal_spi_port_t;
|
||||
|
||||
typedef struct hal_spi_st {
|
||||
hal_spi_port_t port;
|
||||
void *private_spi;
|
||||
} hal_spi_t;
|
||||
|
||||
__API__ int tos_hal_spi_init(hal_spi_t *spi, hal_spi_port_t port);
|
||||
|
||||
__API__ int tos_hal_spi_transfer(hal_spi_t *spi, const uint8_t *send_buf, uint8_t *recv_buf, size_t size, uint32_t timeout);
|
||||
|
||||
__API__ int tos_hal_spi_deinit(hal_spi_t *spi);
|
||||
|
||||
#endif
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
#include "tos_k.h"
|
||||
#include "mp_tos_hal_uart.h"
|
||||
#include "stm32l4xx_hal.h"
|
||||
#include "usart.h"
|
||||
|
||||
__API__ int tos_hal_uart_recv_start(hal_uart_t *uart, const uint8_t *buf, size_t size)
|
||||
{
|
||||
HAL_StatusTypeDef hal_status;
|
||||
UART_HandleTypeDef *uart_handle;
|
||||
|
||||
if (!uart || !buf) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!uart->private_uart) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
uart_handle = (UART_HandleTypeDef *)uart->private_uart;
|
||||
|
||||
hal_status = HAL_UART_Receive_IT(uart_handle, (uint8_t *)buf, size);
|
||||
if (hal_status != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
#ifndef _MP_TOS_HAL_UART_H_
|
||||
#define _MP_TOS_HAL_UART_H_
|
||||
|
||||
#include "tos_hal_uart.h"
|
||||
|
||||
__API__ int tos_hal_uart_recv_start(hal_uart_t *uart, const uint8_t *buf, size_t size);
|
||||
|
||||
#endif
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
/* board specific config */
|
||||
#define MICROPY_HW_BOARD_NAME "BearPi"
|
||||
#define MICROPY_HW_MCU_NAME "STM32F431RC"
|
||||
|
||||
#define MICROPY_HW_UART_NUM 4
|
||||
#define MICROPY_HW_UART_REPL 2
|
||||
#define MICROPY_HW_SPI_NUM 4
|
||||
|
||||
/* project specific config */
|
||||
#define MICROPY_CONFIG_ROM_LEVEL (MICROPY_CONFIG_ROM_LEVEL_BASIC_FEATURES)
|
||||
|
|
@ -1,109 +0,0 @@
|
|||
|
||||
#include "py/mpconfig.h"
|
||||
#include "py/mphal.h"
|
||||
#include "py/obj.h"
|
||||
#include "py/runtime.h"
|
||||
|
||||
#include "modmachine.h"
|
||||
|
||||
#if !(MP_GEN_HDR)
|
||||
#include "tos_k.h"
|
||||
#include "main.h"
|
||||
#endif
|
||||
|
||||
/********************** Tick *************************/
|
||||
|
||||
static uint32_t systick_get_us() {
|
||||
// get systick value
|
||||
uint32_t counter = SysTick->VAL;
|
||||
uint32_t load = SysTick->LOAD;
|
||||
|
||||
// convert from decrementing to incrementing
|
||||
counter = load - counter;
|
||||
|
||||
return (counter * 1000) / (load + 1);
|
||||
}
|
||||
|
||||
mp_uint_t mp_hal_ticks_us(void) {
|
||||
uint32_t ms = tos_tick2millisec(tos_systick_get());
|
||||
uint32_t us = systick_get_us();
|
||||
return ms * 1000 + us;
|
||||
}
|
||||
|
||||
void mp_hal_delay_us(mp_uint_t usec) {
|
||||
mp_uint_t ms = usec / 1000;
|
||||
mp_uint_t us = usec % 1000;
|
||||
if (ms > 0)
|
||||
mp_hal_delay_ms(ms);
|
||||
mp_uint_t start = mp_hal_ticks_us();
|
||||
while (mp_hal_ticks_us() - start < us) {
|
||||
}
|
||||
}
|
||||
|
||||
/********************** GPIO *************************/
|
||||
|
||||
#define ST_PIN(port_num, pin_num) ((uint8_t)(((port_num) << 4) & 0xF0) | ((pin_num) & 0x0F))
|
||||
|
||||
STATIC const mp_rom_map_elem_t machine_pins_locals_dict_table[] = {
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_INT(ST_PIN(0, 0)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_INT(ST_PIN(0, 1)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_INT(ST_PIN(0, 2)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_INT(ST_PIN(0, 3)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_INT(ST_PIN(0, 4)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_INT(ST_PIN(0, 5)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_INT(ST_PIN(0, 6)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_INT(ST_PIN(0, 7)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A8), MP_ROM_INT(ST_PIN(0, 8)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A9), MP_ROM_INT(ST_PIN(0, 9)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A10), MP_ROM_INT(ST_PIN(0, 10)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A11), MP_ROM_INT(ST_PIN(0, 11)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A12), MP_ROM_INT(ST_PIN(0, 12)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A13), MP_ROM_INT(ST_PIN(0, 13)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A14), MP_ROM_INT(ST_PIN(0, 14)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A15), MP_ROM_INT(ST_PIN(0, 15)) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_B0), MP_ROM_INT(ST_PIN(1, 0)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B1), MP_ROM_INT(ST_PIN(1, 1)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B2), MP_ROM_INT(ST_PIN(1, 2)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B3), MP_ROM_INT(ST_PIN(1, 3)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B4), MP_ROM_INT(ST_PIN(1, 4)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B5), MP_ROM_INT(ST_PIN(1, 5)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B6), MP_ROM_INT(ST_PIN(1, 6)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B7), MP_ROM_INT(ST_PIN(1, 7)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B8), MP_ROM_INT(ST_PIN(1, 8)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B9), MP_ROM_INT(ST_PIN(1, 9)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B10), MP_ROM_INT(ST_PIN(1, 10)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B11), MP_ROM_INT(ST_PIN(1, 11)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B12), MP_ROM_INT(ST_PIN(1, 12)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B13), MP_ROM_INT(ST_PIN(1, 13)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B14), MP_ROM_INT(ST_PIN(1, 14)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B15), MP_ROM_INT(ST_PIN(1, 15)) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_C0), MP_ROM_INT(ST_PIN(2, 0)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C1), MP_ROM_INT(ST_PIN(2, 1)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C2), MP_ROM_INT(ST_PIN(2, 2)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C3), MP_ROM_INT(ST_PIN(2, 3)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C4), MP_ROM_INT(ST_PIN(2, 4)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C5), MP_ROM_INT(ST_PIN(2, 5)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C6), MP_ROM_INT(ST_PIN(2, 6)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C7), MP_ROM_INT(ST_PIN(2, 7)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C8), MP_ROM_INT(ST_PIN(2, 8)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C9), MP_ROM_INT(ST_PIN(2, 9)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C10), MP_ROM_INT(ST_PIN(2, 10)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C11), MP_ROM_INT(ST_PIN(2, 11)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C12), MP_ROM_INT(ST_PIN(2, 12)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C13), MP_ROM_INT(ST_PIN(2, 13)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C14), MP_ROM_INT(ST_PIN(2, 14)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C15), MP_ROM_INT(ST_PIN(2, 15)) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_INT(ST_PIN(3, 2)) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_INT(ST_PIN(2, 13)) }, // C13
|
||||
{ MP_ROM_QSTR(MP_QSTR_KEY1), MP_ROM_INT(ST_PIN(1, 2)) }, // B2
|
||||
{ MP_ROM_QSTR(MP_QSTR_KEY2), MP_ROM_INT(ST_PIN(1, 3)) }, // B3
|
||||
|
||||
};
|
||||
MP_DEFINE_CONST_DICT(machine_pins_locals_dict, machine_pins_locals_dict_table);
|
||||
|
||||
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
#ifndef _MPHALBOARD_H_
|
||||
#define _MPHALBOARD_H_
|
||||
|
||||
#include "py/obj.h"
|
||||
|
||||
extern mp_uint_t mp_hal_ticks_us(void);
|
||||
extern void mp_hal_delay_us(mp_uint_t usec);
|
||||
|
||||
extern const mp_obj_dict_t machine_pins_locals_dict;
|
||||
|
||||
#endif /* _MPHALBOARD_H_ */
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
// Automatically generated by makemoduledefs.py.
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module___main__;
|
||||
#undef MODULE_DEF_MP_QSTR___MAIN__
|
||||
#define MODULE_DEF_MP_QSTR___MAIN__ { MP_ROM_QSTR(MP_QSTR___main__), MP_ROM_PTR(&mp_module___main__) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_thread;
|
||||
#undef MODULE_DEF_MP_QSTR__THREAD
|
||||
#define MODULE_DEF_MP_QSTR__THREAD { MP_ROM_QSTR(MP_QSTR__thread), MP_ROM_PTR(&mp_module_thread) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_builtins;
|
||||
#undef MODULE_DEF_MP_QSTR_BUILTINS
|
||||
#define MODULE_DEF_MP_QSTR_BUILTINS { MP_ROM_QSTR(MP_QSTR_builtins), MP_ROM_PTR(&mp_module_builtins) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_gc;
|
||||
#undef MODULE_DEF_MP_QSTR_GC
|
||||
#define MODULE_DEF_MP_QSTR_GC { MP_ROM_QSTR(MP_QSTR_gc), MP_ROM_PTR(&mp_module_gc) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_math;
|
||||
#undef MODULE_DEF_MP_QSTR_MATH
|
||||
#define MODULE_DEF_MP_QSTR_MATH { MP_ROM_QSTR(MP_QSTR_math), MP_ROM_PTR(&mp_module_math) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_micropython;
|
||||
#undef MODULE_DEF_MP_QSTR_MICROPYTHON
|
||||
#define MODULE_DEF_MP_QSTR_MICROPYTHON { MP_ROM_QSTR(MP_QSTR_micropython), MP_ROM_PTR(&mp_module_micropython) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_uarray;
|
||||
#undef MODULE_DEF_MP_QSTR_UARRAY
|
||||
#define MODULE_DEF_MP_QSTR_UARRAY { MP_ROM_QSTR(MP_QSTR_uarray), MP_ROM_PTR(&mp_module_uarray) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_collections;
|
||||
#undef MODULE_DEF_MP_QSTR_UCOLLECTIONS
|
||||
#define MODULE_DEF_MP_QSTR_UCOLLECTIONS { MP_ROM_QSTR(MP_QSTR_ucollections), MP_ROM_PTR(&mp_module_collections) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_machine;
|
||||
#undef MODULE_DEF_MP_QSTR_UMACHINE
|
||||
#define MODULE_DEF_MP_QSTR_UMACHINE { MP_ROM_QSTR(MP_QSTR_umachine), MP_ROM_PTR(&mp_module_machine) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_ustruct;
|
||||
#undef MODULE_DEF_MP_QSTR_USTRUCT
|
||||
#define MODULE_DEF_MP_QSTR_USTRUCT { MP_ROM_QSTR(MP_QSTR_ustruct), MP_ROM_PTR(&mp_module_ustruct) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_sys;
|
||||
#undef MODULE_DEF_MP_QSTR_USYS
|
||||
#define MODULE_DEF_MP_QSTR_USYS { MP_ROM_QSTR(MP_QSTR_usys), MP_ROM_PTR(&mp_module_sys) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_utime;
|
||||
#undef MODULE_DEF_MP_QSTR_UTIME
|
||||
#define MODULE_DEF_MP_QSTR_UTIME { MP_ROM_QSTR(MP_QSTR_utime), MP_ROM_PTR(&mp_module_utime) },
|
||||
|
||||
|
||||
#define MICROPY_REGISTERED_MODULES \
|
||||
MODULE_DEF_MP_QSTR_BUILTINS \
|
||||
MODULE_DEF_MP_QSTR_GC \
|
||||
MODULE_DEF_MP_QSTR_MATH \
|
||||
MODULE_DEF_MP_QSTR_MICROPYTHON \
|
||||
MODULE_DEF_MP_QSTR_UARRAY \
|
||||
MODULE_DEF_MP_QSTR_UCOLLECTIONS \
|
||||
MODULE_DEF_MP_QSTR_UMACHINE \
|
||||
MODULE_DEF_MP_QSTR_USTRUCT \
|
||||
MODULE_DEF_MP_QSTR_USYS \
|
||||
MODULE_DEF_MP_QSTR_UTIME \
|
||||
MODULE_DEF_MP_QSTR__THREAD \
|
||||
MODULE_DEF_MP_QSTR___MAIN__ \
|
||||
// MICROPY_REGISTERED_MODULES
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
// This file was generated by py/makeversionhdr.py
|
||||
#define MICROPY_GIT_TAG "v2.5.0-74-g467a6d7d-dirty"
|
||||
#define MICROPY_GIT_HASH "467a6d7d-dirty"
|
||||
#define MICROPY_BUILD_DATE "2022-09-28"
|
||||
|
|
@ -1,436 +0,0 @@
|
|||
// This file was automatically generated by makeqstrdata.py
|
||||
|
||||
QDEF(MP_QSTRnull, 0, 0, "")
|
||||
QDEF(MP_QSTR_, 5381, 0, "")
|
||||
QDEF(MP_QSTR___dir__, 36730, 7, "__dir__")
|
||||
QDEF(MP_QSTR__0x0a_, 46511, 1, "\x0a")
|
||||
QDEF(MP_QSTR__space_, 46469, 1, " ")
|
||||
QDEF(MP_QSTR__star_, 46479, 1, "*")
|
||||
QDEF(MP_QSTR__slash_, 46474, 1, "/")
|
||||
QDEF(MP_QSTR__lt_module_gt_, 38077, 8, "<module>")
|
||||
QDEF(MP_QSTR__, 46586, 1, "_")
|
||||
QDEF(MP_QSTR___call__, 63911, 8, "__call__")
|
||||
QDEF(MP_QSTR___class__, 50475, 9, "__class__")
|
||||
QDEF(MP_QSTR___delitem__, 13821, 11, "__delitem__")
|
||||
QDEF(MP_QSTR___enter__, 47725, 9, "__enter__")
|
||||
QDEF(MP_QSTR___exit__, 63557, 8, "__exit__")
|
||||
QDEF(MP_QSTR___getattr__, 63552, 11, "__getattr__")
|
||||
QDEF(MP_QSTR___getitem__, 14630, 11, "__getitem__")
|
||||
QDEF(MP_QSTR___hash__, 51447, 8, "__hash__")
|
||||
QDEF(MP_QSTR___init__, 42335, 8, "__init__")
|
||||
QDEF(MP_QSTR___int__, 6934, 7, "__int__")
|
||||
QDEF(MP_QSTR___iter__, 13007, 8, "__iter__")
|
||||
QDEF(MP_QSTR___len__, 45282, 7, "__len__")
|
||||
QDEF(MP_QSTR___main__, 5006, 8, "__main__")
|
||||
QDEF(MP_QSTR___module__, 12543, 10, "__module__")
|
||||
QDEF(MP_QSTR___name__, 14562, 8, "__name__")
|
||||
QDEF(MP_QSTR___new__, 5497, 7, "__new__")
|
||||
QDEF(MP_QSTR___next__, 29442, 8, "__next__")
|
||||
QDEF(MP_QSTR___qualname__, 107, 12, "__qualname__")
|
||||
QDEF(MP_QSTR___repr__, 2832, 8, "__repr__")
|
||||
QDEF(MP_QSTR___setitem__, 15922, 11, "__setitem__")
|
||||
QDEF(MP_QSTR___str__, 52688, 7, "__str__")
|
||||
QDEF(MP_QSTR_ArithmeticError, 35885, 15, "ArithmeticError")
|
||||
QDEF(MP_QSTR_AssertionError, 23191, 14, "AssertionError")
|
||||
QDEF(MP_QSTR_AttributeError, 56865, 14, "AttributeError")
|
||||
QDEF(MP_QSTR_BaseException, 37383, 13, "BaseException")
|
||||
QDEF(MP_QSTR_EOFError, 49041, 8, "EOFError")
|
||||
QDEF(MP_QSTR_Ellipsis, 57584, 8, "Ellipsis")
|
||||
QDEF(MP_QSTR_Exception, 10738, 9, "Exception")
|
||||
QDEF(MP_QSTR_GeneratorExit, 25110, 13, "GeneratorExit")
|
||||
QDEF(MP_QSTR_ImportError, 39968, 11, "ImportError")
|
||||
QDEF(MP_QSTR_IndentationError, 8284, 16, "IndentationError")
|
||||
QDEF(MP_QSTR_IndexError, 44419, 10, "IndexError")
|
||||
QDEF(MP_QSTR_KeyError, 234, 8, "KeyError")
|
||||
QDEF(MP_QSTR_KeyboardInterrupt, 58031, 17, "KeyboardInterrupt")
|
||||
QDEF(MP_QSTR_LookupError, 27135, 11, "LookupError")
|
||||
QDEF(MP_QSTR_MemoryError, 33756, 11, "MemoryError")
|
||||
QDEF(MP_QSTR_NameError, 11706, 9, "NameError")
|
||||
QDEF(MP_QSTR_NoneType, 26647, 8, "NoneType")
|
||||
QDEF(MP_QSTR_NotImplementedError, 39110, 19, "NotImplementedError")
|
||||
QDEF(MP_QSTR_OSError, 26017, 7, "OSError")
|
||||
QDEF(MP_QSTR_OverflowError, 57729, 13, "OverflowError")
|
||||
QDEF(MP_QSTR_RuntimeError, 61793, 12, "RuntimeError")
|
||||
QDEF(MP_QSTR_StopIteration, 7402, 13, "StopIteration")
|
||||
QDEF(MP_QSTR_SyntaxError, 36756, 11, "SyntaxError")
|
||||
QDEF(MP_QSTR_SystemExit, 65312, 10, "SystemExit")
|
||||
QDEF(MP_QSTR_TypeError, 38437, 9, "TypeError")
|
||||
QDEF(MP_QSTR_ValueError, 34710, 10, "ValueError")
|
||||
QDEF(MP_QSTR_ZeroDivisionError, 10166, 17, "ZeroDivisionError")
|
||||
QDEF(MP_QSTR_abs, 12949, 3, "abs")
|
||||
QDEF(MP_QSTR_all, 13124, 3, "all")
|
||||
QDEF(MP_QSTR_any, 13075, 3, "any")
|
||||
QDEF(MP_QSTR_append, 38763, 6, "append")
|
||||
QDEF(MP_QSTR_args, 50882, 4, "args")
|
||||
QDEF(MP_QSTR_bool, 15595, 4, "bool")
|
||||
QDEF(MP_QSTR_builtins, 12791, 8, "builtins")
|
||||
QDEF(MP_QSTR_bytearray, 41846, 9, "bytearray")
|
||||
QDEF(MP_QSTR_bytecode, 32034, 8, "bytecode")
|
||||
QDEF(MP_QSTR_bytes, 45660, 5, "bytes")
|
||||
QDEF(MP_QSTR_callable, 28685, 8, "callable")
|
||||
QDEF(MP_QSTR_chr, 19676, 3, "chr")
|
||||
QDEF(MP_QSTR_classmethod, 36020, 11, "classmethod")
|
||||
QDEF(MP_QSTR_clear, 41084, 5, "clear")
|
||||
QDEF(MP_QSTR_close, 26419, 5, "close")
|
||||
QDEF(MP_QSTR_const, 65472, 5, "const")
|
||||
QDEF(MP_QSTR_copy, 56288, 4, "copy")
|
||||
QDEF(MP_QSTR_count, 19878, 5, "count")
|
||||
QDEF(MP_QSTR_dict, 64575, 4, "dict")
|
||||
QDEF(MP_QSTR_dir, 7930, 3, "dir")
|
||||
QDEF(MP_QSTR_divmod, 1208, 6, "divmod")
|
||||
QDEF(MP_QSTR_end, 8970, 3, "end")
|
||||
QDEF(MP_QSTR_endswith, 41755, 8, "endswith")
|
||||
QDEF(MP_QSTR_eval, 42651, 4, "eval")
|
||||
QDEF(MP_QSTR_exec, 49182, 4, "exec")
|
||||
QDEF(MP_QSTR_extend, 59491, 6, "extend")
|
||||
QDEF(MP_QSTR_find, 13312, 4, "find")
|
||||
QDEF(MP_QSTR_format, 13094, 6, "format")
|
||||
QDEF(MP_QSTR_from_bytes, 29749, 10, "from_bytes")
|
||||
QDEF(MP_QSTR_get, 15155, 3, "get")
|
||||
QDEF(MP_QSTR_getattr, 6080, 7, "getattr")
|
||||
QDEF(MP_QSTR_globals, 18845, 7, "globals")
|
||||
QDEF(MP_QSTR_hasattr, 45196, 7, "hasattr")
|
||||
QDEF(MP_QSTR_hash, 28855, 4, "hash")
|
||||
QDEF(MP_QSTR_id, 28456, 2, "id")
|
||||
QDEF(MP_QSTR_index, 10363, 5, "index")
|
||||
QDEF(MP_QSTR_insert, 21522, 6, "insert")
|
||||
QDEF(MP_QSTR_int, 21270, 3, "int")
|
||||
QDEF(MP_QSTR_isalpha, 14315, 7, "isalpha")
|
||||
QDEF(MP_QSTR_isdigit, 39592, 7, "isdigit")
|
||||
QDEF(MP_QSTR_isinstance, 48822, 10, "isinstance")
|
||||
QDEF(MP_QSTR_islower, 33020, 7, "islower")
|
||||
QDEF(MP_QSTR_isspace, 63579, 7, "isspace")
|
||||
QDEF(MP_QSTR_issubclass, 32693, 10, "issubclass")
|
||||
QDEF(MP_QSTR_isupper, 42973, 7, "isupper")
|
||||
QDEF(MP_QSTR_items, 21475, 5, "items")
|
||||
QDEF(MP_QSTR_iter, 8591, 4, "iter")
|
||||
QDEF(MP_QSTR_join, 23719, 4, "join")
|
||||
QDEF(MP_QSTR_key, 27954, 3, "key")
|
||||
QDEF(MP_QSTR_keys, 4865, 4, "keys")
|
||||
QDEF(MP_QSTR_len, 16482, 3, "len")
|
||||
QDEF(MP_QSTR_list, 7463, 4, "list")
|
||||
QDEF(MP_QSTR_little, 27273, 6, "little")
|
||||
QDEF(MP_QSTR_locals, 41275, 6, "locals")
|
||||
QDEF(MP_QSTR_lower, 52166, 5, "lower")
|
||||
QDEF(MP_QSTR_lstrip, 47589, 6, "lstrip")
|
||||
QDEF(MP_QSTR_main, 47054, 4, "main")
|
||||
QDEF(MP_QSTR_map, 17337, 3, "map")
|
||||
QDEF(MP_QSTR_micropython, 31755, 11, "micropython")
|
||||
QDEF(MP_QSTR_next, 34882, 4, "next")
|
||||
QDEF(MP_QSTR_object, 36240, 6, "object")
|
||||
QDEF(MP_QSTR_open, 15057, 4, "open")
|
||||
QDEF(MP_QSTR_ord, 24092, 3, "ord")
|
||||
QDEF(MP_QSTR_pop, 29482, 3, "pop")
|
||||
QDEF(MP_QSTR_popitem, 11455, 7, "popitem")
|
||||
QDEF(MP_QSTR_pow, 29485, 3, "pow")
|
||||
QDEF(MP_QSTR_print, 50772, 5, "print")
|
||||
QDEF(MP_QSTR_range, 24090, 5, "range")
|
||||
QDEF(MP_QSTR_read, 63927, 4, "read")
|
||||
QDEF(MP_QSTR_readinto, 48971, 8, "readinto")
|
||||
QDEF(MP_QSTR_readline, 6649, 8, "readline")
|
||||
QDEF(MP_QSTR_remove, 35427, 6, "remove")
|
||||
QDEF(MP_QSTR_replace, 9545, 7, "replace")
|
||||
QDEF(MP_QSTR_repr, 63440, 4, "repr")
|
||||
QDEF(MP_QSTR_reverse, 10789, 7, "reverse")
|
||||
QDEF(MP_QSTR_rfind, 40146, 5, "rfind")
|
||||
QDEF(MP_QSTR_rindex, 11241, 6, "rindex")
|
||||
QDEF(MP_QSTR_round, 9703, 5, "round")
|
||||
QDEF(MP_QSTR_rsplit, 165, 6, "rsplit")
|
||||
QDEF(MP_QSTR_rstrip, 38203, 6, "rstrip")
|
||||
QDEF(MP_QSTR_self, 30585, 4, "self")
|
||||
QDEF(MP_QSTR_send, 30393, 4, "send")
|
||||
QDEF(MP_QSTR_sep, 36643, 3, "sep")
|
||||
QDEF(MP_QSTR_set, 36647, 3, "set")
|
||||
QDEF(MP_QSTR_setattr, 43220, 7, "setattr")
|
||||
QDEF(MP_QSTR_setdefault, 41836, 10, "setdefault")
|
||||
QDEF(MP_QSTR_sort, 40383, 4, "sort")
|
||||
QDEF(MP_QSTR_sorted, 5470, 6, "sorted")
|
||||
QDEF(MP_QSTR_split, 13239, 5, "split")
|
||||
QDEF(MP_QSTR_start, 61317, 5, "start")
|
||||
QDEF(MP_QSTR_startswith, 59508, 10, "startswith")
|
||||
QDEF(MP_QSTR_staticmethod, 44898, 12, "staticmethod")
|
||||
QDEF(MP_QSTR_step, 13911, 4, "step")
|
||||
QDEF(MP_QSTR_stop, 13981, 4, "stop")
|
||||
QDEF(MP_QSTR_str, 36176, 3, "str")
|
||||
QDEF(MP_QSTR_strip, 7721, 5, "strip")
|
||||
QDEF(MP_QSTR_sum, 36142, 3, "sum")
|
||||
QDEF(MP_QSTR_super, 45764, 5, "super")
|
||||
QDEF(MP_QSTR_throw, 17587, 5, "throw")
|
||||
QDEF(MP_QSTR_to_bytes, 16088, 8, "to_bytes")
|
||||
QDEF(MP_QSTR_tuple, 16893, 5, "tuple")
|
||||
QDEF(MP_QSTR_type, 32669, 4, "type")
|
||||
QDEF(MP_QSTR_update, 30388, 6, "update")
|
||||
QDEF(MP_QSTR_upper, 37927, 5, "upper")
|
||||
QDEF(MP_QSTR_utf_hyphen_8, 33463, 5, "utf-8")
|
||||
QDEF(MP_QSTR_value, 13390, 5, "value")
|
||||
QDEF(MP_QSTR_values, 48765, 6, "values")
|
||||
QDEF(MP_QSTR_write, 43160, 5, "write")
|
||||
QDEF(MP_QSTR_zip, 44262, 3, "zip")
|
||||
QDEF(MP_QSTR___add__, 33476, 7, "__add__")
|
||||
QDEF(MP_QSTR___aenter__, 33868, 10, "__aenter__")
|
||||
QDEF(MP_QSTR___aexit__, 53188, 9, "__aexit__")
|
||||
QDEF(MP_QSTR___aiter__, 11086, 9, "__aiter__")
|
||||
QDEF(MP_QSTR___anext__, 46211, 9, "__anext__")
|
||||
QDEF(MP_QSTR___bases__, 12291, 9, "__bases__")
|
||||
QDEF(MP_QSTR___bool__, 25899, 8, "__bool__")
|
||||
QDEF(MP_QSTR___build_class__, 34882, 15, "__build_class__")
|
||||
QDEF(MP_QSTR___contains__, 24518, 12, "__contains__")
|
||||
QDEF(MP_QSTR___del__, 14184, 7, "__del__")
|
||||
QDEF(MP_QSTR___dict__, 21631, 8, "__dict__")
|
||||
QDEF(MP_QSTR___eq__, 15985, 6, "__eq__")
|
||||
QDEF(MP_QSTR___file__, 21507, 8, "__file__")
|
||||
QDEF(MP_QSTR___ge__, 18087, 6, "__ge__")
|
||||
QDEF(MP_QSTR___gt__, 33462, 6, "__gt__")
|
||||
QDEF(MP_QSTR___iadd__, 19053, 8, "__iadd__")
|
||||
QDEF(MP_QSTR___iand__, 8615, 8, "__iand__")
|
||||
QDEF(MP_QSTR___ifloordiv__, 3919, 13, "__ifloordiv__")
|
||||
QDEF(MP_QSTR___ilshift__, 41600, 11, "__ilshift__")
|
||||
QDEF(MP_QSTR___imatmul__, 28352, 11, "__imatmul__")
|
||||
QDEF(MP_QSTR___imod__, 34378, 8, "__imod__")
|
||||
QDEF(MP_QSTR___import__, 15928, 10, "__import__")
|
||||
QDEF(MP_QSTR___imul__, 52760, 8, "__imul__")
|
||||
QDEF(MP_QSTR___ior__, 36849, 7, "__ior__")
|
||||
QDEF(MP_QSTR___ipow__, 54660, 8, "__ipow__")
|
||||
QDEF(MP_QSTR___irshift__, 63710, 11, "__irshift__")
|
||||
QDEF(MP_QSTR___isub__, 30728, 8, "__isub__")
|
||||
QDEF(MP_QSTR___itruediv__, 545, 12, "__itruediv__")
|
||||
QDEF(MP_QSTR___ixor__, 47369, 8, "__ixor__")
|
||||
QDEF(MP_QSTR___le__, 5068, 6, "__le__")
|
||||
QDEF(MP_QSTR___lt__, 26717, 6, "__lt__")
|
||||
QDEF(MP_QSTR___ne__, 2830, 6, "__ne__")
|
||||
QDEF(MP_QSTR___path__, 9160, 8, "__path__")
|
||||
QDEF(MP_QSTR___repl_print__, 47872, 14, "__repl_print__")
|
||||
QDEF(MP_QSTR___reversed__, 65377, 12, "__reversed__")
|
||||
QDEF(MP_QSTR___sub__, 2337, 7, "__sub__")
|
||||
QDEF(MP_QSTR___traceback__, 53071, 13, "__traceback__")
|
||||
QDEF(MP_QSTR__percent__hash_o, 6764, 3, "%#o")
|
||||
QDEF(MP_QSTR__percent__hash_x, 6779, 3, "%#x")
|
||||
QDEF(MP_QSTR__brace_open__colon__hash_b_brace_close_, 14168, 5, "{:#b}")
|
||||
QDEF(MP_QSTR_maximum_space_recursion_space_depth_space_exceeded, 7795, 32, "maximum recursion depth exceeded")
|
||||
QDEF(MP_QSTR__lt_lambda_gt_, 35968, 8, "<lambda>")
|
||||
QDEF(MP_QSTR__lt_listcomp_gt_, 5588, 10, "<listcomp>")
|
||||
QDEF(MP_QSTR__lt_dictcomp_gt_, 36300, 10, "<dictcomp>")
|
||||
QDEF(MP_QSTR__lt_setcomp_gt_, 20820, 9, "<setcomp>")
|
||||
QDEF(MP_QSTR__lt_genexpr_gt_, 27188, 9, "<genexpr>")
|
||||
QDEF(MP_QSTR__lt_string_gt_, 21330, 8, "<string>")
|
||||
QDEF(MP_QSTR__lt_stdin_gt_, 25571, 7, "<stdin>")
|
||||
QDEF(MP_QSTR_A0, 29268, 2, "A0")
|
||||
QDEF(MP_QSTR_A1, 29269, 2, "A1")
|
||||
QDEF(MP_QSTR_A10, 48325, 3, "A10")
|
||||
QDEF(MP_QSTR_A11, 48324, 3, "A11")
|
||||
QDEF(MP_QSTR_A12, 48327, 3, "A12")
|
||||
QDEF(MP_QSTR_A13, 48326, 3, "A13")
|
||||
QDEF(MP_QSTR_A14, 48321, 3, "A14")
|
||||
QDEF(MP_QSTR_A15, 48320, 3, "A15")
|
||||
QDEF(MP_QSTR_A2, 29270, 2, "A2")
|
||||
QDEF(MP_QSTR_A3, 29271, 2, "A3")
|
||||
QDEF(MP_QSTR_A4, 29264, 2, "A4")
|
||||
QDEF(MP_QSTR_A5, 29265, 2, "A5")
|
||||
QDEF(MP_QSTR_A6, 29266, 2, "A6")
|
||||
QDEF(MP_QSTR_A7, 29267, 2, "A7")
|
||||
QDEF(MP_QSTR_A8, 29276, 2, "A8")
|
||||
QDEF(MP_QSTR_A9, 29277, 2, "A9")
|
||||
QDEF(MP_QSTR_B0, 29431, 2, "B0")
|
||||
QDEF(MP_QSTR_B1, 29430, 2, "B1")
|
||||
QDEF(MP_QSTR_B10, 53638, 3, "B10")
|
||||
QDEF(MP_QSTR_B11, 53639, 3, "B11")
|
||||
QDEF(MP_QSTR_B12, 53636, 3, "B12")
|
||||
QDEF(MP_QSTR_B13, 53637, 3, "B13")
|
||||
QDEF(MP_QSTR_B14, 53634, 3, "B14")
|
||||
QDEF(MP_QSTR_B15, 53635, 3, "B15")
|
||||
QDEF(MP_QSTR_B2, 29429, 2, "B2")
|
||||
QDEF(MP_QSTR_B3, 29428, 2, "B3")
|
||||
QDEF(MP_QSTR_B4, 29427, 2, "B4")
|
||||
QDEF(MP_QSTR_B5, 29426, 2, "B5")
|
||||
QDEF(MP_QSTR_B6, 29425, 2, "B6")
|
||||
QDEF(MP_QSTR_B7, 29424, 2, "B7")
|
||||
QDEF(MP_QSTR_B8, 29439, 2, "B8")
|
||||
QDEF(MP_QSTR_B9, 29438, 2, "B9")
|
||||
QDEF(MP_QSTR_C0, 29334, 2, "C0")
|
||||
QDEF(MP_QSTR_C1, 29335, 2, "C1")
|
||||
QDEF(MP_QSTR_C10, 50503, 3, "C10")
|
||||
QDEF(MP_QSTR_C11, 50502, 3, "C11")
|
||||
QDEF(MP_QSTR_C12, 50501, 3, "C12")
|
||||
QDEF(MP_QSTR_C13, 50500, 3, "C13")
|
||||
QDEF(MP_QSTR_C14, 50499, 3, "C14")
|
||||
QDEF(MP_QSTR_C15, 50498, 3, "C15")
|
||||
QDEF(MP_QSTR_C2, 29332, 2, "C2")
|
||||
QDEF(MP_QSTR_C3, 29333, 2, "C3")
|
||||
QDEF(MP_QSTR_C4, 29330, 2, "C4")
|
||||
QDEF(MP_QSTR_C5, 29331, 2, "C5")
|
||||
QDEF(MP_QSTR_C6, 29328, 2, "C6")
|
||||
QDEF(MP_QSTR_C7, 29329, 2, "C7")
|
||||
QDEF(MP_QSTR_C8, 29342, 2, "C8")
|
||||
QDEF(MP_QSTR_C9, 29343, 2, "C9")
|
||||
QDEF(MP_QSTR_D2, 29235, 2, "D2")
|
||||
QDEF(MP_QSTR_FileIO, 5573, 6, "FileIO")
|
||||
QDEF(MP_QSTR_IN, 29474, 2, "IN")
|
||||
QDEF(MP_QSTR_IN_PULLDOWN, 47946, 11, "IN_PULLDOWN")
|
||||
QDEF(MP_QSTR_IN_PULLUP, 55837, 9, "IN_PULLUP")
|
||||
QDEF(MP_QSTR_IRQ_FALLING, 49207, 11, "IRQ_FALLING")
|
||||
QDEF(MP_QSTR_IRQ_RISING, 60792, 10, "IRQ_RISING")
|
||||
QDEF(MP_QSTR_KEY1, 4963, 4, "KEY1")
|
||||
QDEF(MP_QSTR_KEY2, 4960, 4, "KEY2")
|
||||
QDEF(MP_QSTR_LED, 56456, 3, "LED")
|
||||
QDEF(MP_QSTR_LockType, 8246, 8, "LockType")
|
||||
QDEF(MP_QSTR_ONE_SHOT, 65374, 8, "ONE_SHOT")
|
||||
QDEF(MP_QSTR_OPEN_DRAIN, 18526, 10, "OPEN_DRAIN")
|
||||
QDEF(MP_QSTR_OUT, 58123, 3, "OUT")
|
||||
QDEF(MP_QSTR_PERIODIC, 13578, 8, "PERIODIC")
|
||||
QDEF(MP_QSTR_Pin, 5138, 3, "Pin")
|
||||
QDEF(MP_QSTR_PinBase, 17223, 7, "PinBase")
|
||||
QDEF(MP_QSTR_Signal, 58523, 6, "Signal")
|
||||
QDEF(MP_QSTR_StopAsyncIteration, 61676, 18, "StopAsyncIteration")
|
||||
QDEF(MP_QSTR_Timer, 8098, 5, "Timer")
|
||||
QDEF(MP_QSTR_UART, 6583, 4, "UART")
|
||||
QDEF(MP_QSTR__machine, 19391, 8, "_machine")
|
||||
QDEF(MP_QSTR__thread, 724, 7, "_thread")
|
||||
QDEF(MP_QSTR_acos, 40987, 4, "acos")
|
||||
QDEF(MP_QSTR_acquire, 54045, 7, "acquire")
|
||||
QDEF(MP_QSTR_add, 12868, 3, "add")
|
||||
QDEF(MP_QSTR_alloc_emergency_exception_buf, 10872, 29, "alloc_emergency_exception_buf")
|
||||
QDEF(MP_QSTR_allocate_lock, 60908, 13, "allocate_lock")
|
||||
QDEF(MP_QSTR_argv, 50887, 4, "argv")
|
||||
QDEF(MP_QSTR_array, 29308, 5, "array")
|
||||
QDEF(MP_QSTR_asin, 58704, 4, "asin")
|
||||
QDEF(MP_QSTR_atan, 48671, 4, "atan")
|
||||
QDEF(MP_QSTR_atan2, 33229, 5, "atan2")
|
||||
QDEF(MP_QSTR_bin, 18656, 3, "bin")
|
||||
QDEF(MP_QSTR_bound_method, 41623, 12, "bound_method")
|
||||
QDEF(MP_QSTR_buffer, 41189, 6, "buffer")
|
||||
QDEF(MP_QSTR_byteorder, 39265, 9, "byteorder")
|
||||
QDEF(MP_QSTR_calcsize, 14413, 8, "calcsize")
|
||||
QDEF(MP_QSTR_callback, 61516, 8, "callback")
|
||||
QDEF(MP_QSTR_ceil, 45062, 4, "ceil")
|
||||
QDEF(MP_QSTR_closure, 51828, 7, "closure")
|
||||
QDEF(MP_QSTR_collect, 26011, 7, "collect")
|
||||
QDEF(MP_QSTR_complex, 40389, 7, "complex")
|
||||
QDEF(MP_QSTR_copysign, 5171, 8, "copysign")
|
||||
QDEF(MP_QSTR_cos, 19578, 3, "cos")
|
||||
QDEF(MP_QSTR_decode, 22953, 6, "decode")
|
||||
QDEF(MP_QSTR_default, 32206, 7, "default")
|
||||
QDEF(MP_QSTR_degrees, 16642, 7, "degrees")
|
||||
QDEF(MP_QSTR_deinit, 36254, 6, "deinit")
|
||||
QDEF(MP_QSTR_delattr, 51419, 7, "delattr")
|
||||
QDEF(MP_QSTR_deleter, 56174, 7, "deleter")
|
||||
QDEF(MP_QSTR_dict_view, 43309, 9, "dict_view")
|
||||
QDEF(MP_QSTR_difference, 9330, 10, "difference")
|
||||
QDEF(MP_QSTR_difference_update, 64156, 17, "difference_update")
|
||||
QDEF(MP_QSTR_disable, 30353, 7, "disable")
|
||||
QDEF(MP_QSTR_discard, 28943, 7, "discard")
|
||||
QDEF(MP_QSTR_doc, 7981, 3, "doc")
|
||||
QDEF(MP_QSTR_e, 46528, 1, "e")
|
||||
QDEF(MP_QSTR_enable, 56836, 6, "enable")
|
||||
QDEF(MP_QSTR_encode, 51779, 6, "encode")
|
||||
QDEF(MP_QSTR_enumerate, 47729, 9, "enumerate")
|
||||
QDEF(MP_QSTR_errno, 4545, 5, "errno")
|
||||
QDEF(MP_QSTR_exit, 48773, 4, "exit")
|
||||
QDEF(MP_QSTR_exp, 9416, 3, "exp")
|
||||
QDEF(MP_QSTR_fabs, 4755, 4, "fabs")
|
||||
QDEF(MP_QSTR_filter, 48677, 6, "filter")
|
||||
QDEF(MP_QSTR_float, 17461, 5, "float")
|
||||
QDEF(MP_QSTR_floor, 18045, 5, "floor")
|
||||
QDEF(MP_QSTR_fmod, 17637, 4, "fmod")
|
||||
QDEF(MP_QSTR_freq, 15077, 4, "freq")
|
||||
QDEF(MP_QSTR_frexp, 38940, 5, "frexp")
|
||||
QDEF(MP_QSTR_fromkeys, 48439, 8, "fromkeys")
|
||||
QDEF(MP_QSTR_function, 551, 8, "function")
|
||||
QDEF(MP_QSTR_gc, 28257, 2, "gc")
|
||||
QDEF(MP_QSTR_generator, 50070, 9, "generator")
|
||||
QDEF(MP_QSTR_get_ident, 45566, 9, "get_ident")
|
||||
QDEF(MP_QSTR_getter, 45712, 6, "getter")
|
||||
QDEF(MP_QSTR_handler, 24029, 7, "handler")
|
||||
QDEF(MP_QSTR_heap_lock, 36013, 9, "heap_lock")
|
||||
QDEF(MP_QSTR_heap_unlock, 11606, 11, "heap_unlock")
|
||||
QDEF(MP_QSTR_help, 23700, 4, "help")
|
||||
QDEF(MP_QSTR_hex, 20592, 3, "hex")
|
||||
QDEF(MP_QSTR_imag, 46919, 4, "imag")
|
||||
QDEF(MP_QSTR_implementation, 11543, 14, "implementation")
|
||||
QDEF(MP_QSTR_init, 46111, 4, "init")
|
||||
QDEF(MP_QSTR_intersection, 10792, 12, "intersection")
|
||||
QDEF(MP_QSTR_intersection_update, 56582, 19, "intersection_update")
|
||||
QDEF(MP_QSTR_invert, 183, 6, "invert")
|
||||
QDEF(MP_QSTR_irq, 22159, 3, "irq")
|
||||
QDEF(MP_QSTR_isdisjoint, 26871, 10, "isdisjoint")
|
||||
QDEF(MP_QSTR_isenabled, 58778, 9, "isenabled")
|
||||
QDEF(MP_QSTR_isfinite, 43942, 8, "isfinite")
|
||||
QDEF(MP_QSTR_isinf, 4414, 5, "isinf")
|
||||
QDEF(MP_QSTR_isnan, 926, 5, "isnan")
|
||||
QDEF(MP_QSTR_issubset, 49593, 8, "issubset")
|
||||
QDEF(MP_QSTR_issuperset, 60668, 10, "issuperset")
|
||||
QDEF(MP_QSTR_iterable, 37413, 8, "iterable")
|
||||
QDEF(MP_QSTR_iterator, 48711, 8, "iterator")
|
||||
QDEF(MP_QSTR_kbd_intr, 5110, 8, "kbd_intr")
|
||||
QDEF(MP_QSTR_ldexp, 28480, 5, "ldexp")
|
||||
QDEF(MP_QSTR_lock, 9134, 4, "lock")
|
||||
QDEF(MP_QSTR_locked, 47631, 6, "locked")
|
||||
QDEF(MP_QSTR_log, 16161, 3, "log")
|
||||
QDEF(MP_QSTR_math, 47925, 4, "math")
|
||||
QDEF(MP_QSTR_max, 17329, 3, "max")
|
||||
QDEF(MP_QSTR_mem, 17440, 3, "mem")
|
||||
QDEF(MP_QSTR_mem16, 51719, 5, "mem16")
|
||||
QDEF(MP_QSTR_mem32, 51777, 5, "mem32")
|
||||
QDEF(MP_QSTR_mem8, 51224, 4, "mem8")
|
||||
QDEF(MP_QSTR_mem_alloc, 11090, 9, "mem_alloc")
|
||||
QDEF(MP_QSTR_mem_free, 25291, 8, "mem_free")
|
||||
QDEF(MP_QSTR_min, 17071, 3, "min")
|
||||
QDEF(MP_QSTR_mode, 49190, 4, "mode")
|
||||
QDEF(MP_QSTR_modf, 49189, 4, "modf")
|
||||
QDEF(MP_QSTR_module, 39359, 6, "module")
|
||||
QDEF(MP_QSTR_modules, 53740, 7, "modules")
|
||||
QDEF(MP_QSTR_name, 30114, 4, "name")
|
||||
QDEF(MP_QSTR_namedtuple, 5662, 10, "namedtuple")
|
||||
QDEF(MP_QSTR_oct, 23805, 3, "oct")
|
||||
QDEF(MP_QSTR_off, 23690, 3, "off")
|
||||
QDEF(MP_QSTR_on, 28516, 2, "on")
|
||||
QDEF(MP_QSTR_opt_level, 26503, 9, "opt_level")
|
||||
QDEF(MP_QSTR_pack, 53692, 4, "pack")
|
||||
QDEF(MP_QSTR_pack_into, 43295, 9, "pack_into")
|
||||
QDEF(MP_QSTR_path, 52872, 4, "path")
|
||||
QDEF(MP_QSTR_pend_throw, 29939, 10, "pend_throw")
|
||||
QDEF(MP_QSTR_period, 41120, 6, "period")
|
||||
QDEF(MP_QSTR_pi, 28700, 2, "pi")
|
||||
QDEF(MP_QSTR_platform, 6458, 8, "platform")
|
||||
QDEF(MP_QSTR_print_exception, 8732, 15, "print_exception")
|
||||
QDEF(MP_QSTR_property, 10690, 8, "property")
|
||||
QDEF(MP_QSTR_radians, 16263, 7, "radians")
|
||||
QDEF(MP_QSTR_readlines, 22890, 9, "readlines")
|
||||
QDEF(MP_QSTR_real, 63935, 4, "real")
|
||||
QDEF(MP_QSTR_release, 36844, 7, "release")
|
||||
QDEF(MP_QSTR_reversed, 28321, 8, "reversed")
|
||||
QDEF(MP_QSTR_rxbuf, 26494, 5, "rxbuf")
|
||||
QDEF(MP_QSTR_schedule, 44256, 8, "schedule")
|
||||
QDEF(MP_QSTR_setter, 22788, 6, "setter")
|
||||
QDEF(MP_QSTR_sin, 37041, 3, "sin")
|
||||
QDEF(MP_QSTR_sleep, 10218, 5, "sleep")
|
||||
QDEF(MP_QSTR_sleep_ms, 25355, 8, "sleep_ms")
|
||||
QDEF(MP_QSTR_slice, 62645, 5, "slice")
|
||||
QDEF(MP_QSTR_soft_reset, 26081, 10, "soft_reset")
|
||||
QDEF(MP_QSTR_sqrt, 17441, 4, "sqrt")
|
||||
QDEF(MP_QSTR_stack_size, 15153, 10, "stack_size")
|
||||
QDEF(MP_QSTR_start_new_thread, 9687, 16, "start_new_thread")
|
||||
QDEF(MP_QSTR_symmetric_difference, 26574, 20, "symmetric_difference")
|
||||
QDEF(MP_QSTR_symmetric_difference_update, 63584, 27, "symmetric_difference_update")
|
||||
QDEF(MP_QSTR_sys, 36540, 3, "sys")
|
||||
QDEF(MP_QSTR_tan, 25086, 3, "tan")
|
||||
QDEF(MP_QSTR_threshold, 12274, 9, "threshold")
|
||||
QDEF(MP_QSTR_tick_hz, 56189, 7, "tick_hz")
|
||||
QDEF(MP_QSTR_ticks_add, 44701, 9, "ticks_add")
|
||||
QDEF(MP_QSTR_ticks_cpu, 42266, 9, "ticks_cpu")
|
||||
QDEF(MP_QSTR_ticks_diff, 57521, 10, "ticks_diff")
|
||||
QDEF(MP_QSTR_ticks_ms, 12866, 8, "ticks_ms")
|
||||
QDEF(MP_QSTR_timeout, 21566, 7, "timeout")
|
||||
QDEF(MP_QSTR_timeout_char, 19065, 12, "timeout_char")
|
||||
QDEF(MP_QSTR_trigger, 35997, 7, "trigger")
|
||||
QDEF(MP_QSTR_trunc, 39259, 5, "trunc")
|
||||
QDEF(MP_QSTR_uarray, 34441, 6, "uarray")
|
||||
QDEF(MP_QSTR_ucollections, 39445, 12, "ucollections")
|
||||
QDEF(MP_QSTR_umachine, 32661, 8, "umachine")
|
||||
QDEF(MP_QSTR_union, 31990, 5, "union")
|
||||
QDEF(MP_QSTR_unpack, 15367, 6, "unpack")
|
||||
QDEF(MP_QSTR_unpack_from, 27918, 11, "unpack_from")
|
||||
QDEF(MP_QSTR_ustruct, 2119, 7, "ustruct")
|
||||
QDEF(MP_QSTR_usys, 62409, 4, "usys")
|
||||
QDEF(MP_QSTR_utime, 40421, 5, "utime")
|
||||
QDEF(MP_QSTR_version, 54207, 7, "version")
|
||||
QDEF(MP_QSTR_version_info, 2670, 12, "version_info")
|
||||
|
|
@ -1,404 +0,0 @@
|
|||
;********************** COPYRIGHT(c) 2017 STMicroelectronics ******************
|
||||
;* File Name : startup_stm32l431xx.s
|
||||
;* Author : MCD Application Team
|
||||
;* Description : STM32L431xx Ultra Low Power devices vector table for MDK-ARM toolchain.
|
||||
;* This module performs:
|
||||
;* - Set the initial SP
|
||||
;* - Set the initial PC == Reset_Handler
|
||||
;* - Set the vector table entries with the exceptions ISR address
|
||||
;* - Branches to __main in the C library (which eventually
|
||||
;* calls main()).
|
||||
;* After Reset the Cortex-M4 processor is in Thread mode,
|
||||
;* priority is Privileged, and the Stack is set to Main.
|
||||
;* <<< Use Configuration Wizard in Context Menu >>>
|
||||
;*******************************************************************************
|
||||
;*
|
||||
;* Redistribution and use in source and binary forms, with or without modification,
|
||||
;* are permitted provided that the following conditions are met:
|
||||
;* 1. Redistributions of source code must retain the above copyright notice,
|
||||
;* this list of conditions and the following disclaimer.
|
||||
;* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
;* this list of conditions and the following disclaimer in the documentation
|
||||
;* and/or other materials provided with the distribution.
|
||||
;* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||
;* may be used to endorse or promote products derived from this software
|
||||
;* without specific prior written permission.
|
||||
;*
|
||||
;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
;*
|
||||
;*******************************************************************************
|
||||
;
|
||||
; Amount of memory (in bytes) allocated for Stack
|
||||
; Tailor this value to your application needs
|
||||
; <h> Stack Configuration
|
||||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||
; </h>
|
||||
|
||||
Stack_Size EQU 0x100
|
||||
|
||||
AREA STACK, NOINIT, READWRITE, ALIGN=3
|
||||
Stack_Mem SPACE Stack_Size
|
||||
__initial_sp
|
||||
|
||||
|
||||
; <h> Heap Configuration
|
||||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||
; </h>
|
||||
|
||||
Heap_Size EQU 0x100
|
||||
|
||||
AREA HEAP, NOINIT, READWRITE, ALIGN=3
|
||||
__heap_base
|
||||
Heap_Mem SPACE Heap_Size
|
||||
__heap_limit
|
||||
|
||||
PRESERVE8
|
||||
THUMB
|
||||
|
||||
|
||||
; Vector Table Mapped to Address 0 at Reset
|
||||
AREA RESET, DATA, READONLY
|
||||
EXPORT __Vectors
|
||||
EXPORT __Vectors_End
|
||||
EXPORT __Vectors_Size
|
||||
|
||||
__Vectors DCD __initial_sp ; Top of Stack
|
||||
DCD Reset_Handler ; Reset Handler
|
||||
DCD NMI_Handler ; NMI Handler
|
||||
DCD HardFault_Handler ; Hard Fault Handler
|
||||
DCD MemManage_Handler ; MPU Fault Handler
|
||||
DCD BusFault_Handler ; Bus Fault Handler
|
||||
DCD UsageFault_Handler ; Usage Fault Handler
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD SVC_Handler ; SVCall Handler
|
||||
DCD DebugMon_Handler ; Debug Monitor Handler
|
||||
DCD 0 ; Reserved
|
||||
DCD PendSV_Handler ; PendSV Handler
|
||||
DCD SysTick_Handler ; SysTick Handler
|
||||
|
||||
; External Interrupts
|
||||
DCD WWDG_IRQHandler ; Window WatchDog
|
||||
DCD PVD_PVM_IRQHandler ; PVD/PVM1/PVM2/PVM3/PVM4 through EXTI Line detection
|
||||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line
|
||||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line
|
||||
DCD FLASH_IRQHandler ; FLASH
|
||||
DCD RCC_IRQHandler ; RCC
|
||||
DCD EXTI0_IRQHandler ; EXTI Line0
|
||||
DCD EXTI1_IRQHandler ; EXTI Line1
|
||||
DCD EXTI2_IRQHandler ; EXTI Line2
|
||||
DCD EXTI3_IRQHandler ; EXTI Line3
|
||||
DCD EXTI4_IRQHandler ; EXTI Line4
|
||||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1
|
||||
DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2
|
||||
DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3
|
||||
DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4
|
||||
DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5
|
||||
DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6
|
||||
DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7
|
||||
DCD ADC1_IRQHandler ; ADC1
|
||||
DCD CAN1_TX_IRQHandler ; CAN1 TX
|
||||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0
|
||||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1
|
||||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE
|
||||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s
|
||||
DCD TIM1_BRK_TIM15_IRQHandler ; TIM1 Break and TIM15
|
||||
DCD TIM1_UP_TIM16_IRQHandler ; TIM1 Update and TIM16
|
||||
DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation
|
||||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
|
||||
DCD TIM2_IRQHandler ; TIM2
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD I2C1_EV_IRQHandler ; I2C1 Event
|
||||
DCD I2C1_ER_IRQHandler ; I2C1 Error
|
||||
DCD I2C2_EV_IRQHandler ; I2C2 Event
|
||||
DCD I2C2_ER_IRQHandler ; I2C2 Error
|
||||
DCD SPI1_IRQHandler ; SPI1
|
||||
DCD SPI2_IRQHandler ; SPI2
|
||||
DCD USART1_IRQHandler ; USART1
|
||||
DCD USART2_IRQHandler ; USART2
|
||||
DCD USART3_IRQHandler ; USART3
|
||||
DCD EXTI15_10_IRQHandler ; External Line[15:10]
|
||||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD SDMMC1_IRQHandler ; SDMMC1
|
||||
DCD 0 ; Reserved
|
||||
DCD SPI3_IRQHandler ; SPI3
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors
|
||||
DCD TIM7_IRQHandler ; TIM7
|
||||
DCD DMA2_Channel1_IRQHandler ; DMA2 Channel 1
|
||||
DCD DMA2_Channel2_IRQHandler ; DMA2 Channel 2
|
||||
DCD DMA2_Channel3_IRQHandler ; DMA2 Channel 3
|
||||
DCD DMA2_Channel4_IRQHandler ; DMA2 Channel 4
|
||||
DCD DMA2_Channel5_IRQHandler ; DMA2 Channel 5
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD COMP_IRQHandler ; COMP Interrupt
|
||||
DCD LPTIM1_IRQHandler ; LP TIM1 interrupt
|
||||
DCD LPTIM2_IRQHandler ; LP TIM2 interrupt
|
||||
DCD 0 ; Reserved
|
||||
DCD DMA2_Channel6_IRQHandler ; DMA2 Channel 6
|
||||
DCD DMA2_Channel7_IRQHandler ; DMA2 Channel 7
|
||||
DCD LPUART1_IRQHandler ; LP UART1 interrupt
|
||||
DCD QUADSPI_IRQHandler ; Quad SPI global interrupt
|
||||
DCD I2C3_EV_IRQHandler ; I2C3 event
|
||||
DCD I2C3_ER_IRQHandler ; I2C3 error
|
||||
DCD SAI1_IRQHandler ; Serial Audio Interface 1 global interrupt
|
||||
DCD 0 ; Reserved
|
||||
DCD SWPMI1_IRQHandler ; Serial Wire Interface 1 global interrupt
|
||||
DCD TSC_IRQHandler ; Touch Sense Controller global interrupt
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD RNG_IRQHandler ; RNG global interrupt
|
||||
DCD FPU_IRQHandler ; FPU
|
||||
DCD CRS_IRQHandler ; CRS interrupt
|
||||
|
||||
__Vectors_End
|
||||
|
||||
__Vectors_Size EQU __Vectors_End - __Vectors
|
||||
|
||||
AREA |.text|, CODE, READONLY
|
||||
|
||||
; Reset handler
|
||||
Reset_Handler PROC
|
||||
EXPORT Reset_Handler [WEAK]
|
||||
IMPORT SystemInit
|
||||
IMPORT __main
|
||||
|
||||
LDR R0, =SystemInit
|
||||
BLX R0
|
||||
LDR R0, =__main
|
||||
BX R0
|
||||
ENDP
|
||||
|
||||
; Dummy Exception Handlers (infinite loops which can be modified)
|
||||
|
||||
NMI_Handler PROC
|
||||
EXPORT NMI_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
HardFault_Handler\
|
||||
PROC
|
||||
EXPORT HardFault_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
MemManage_Handler\
|
||||
PROC
|
||||
EXPORT MemManage_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
BusFault_Handler\
|
||||
PROC
|
||||
EXPORT BusFault_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
UsageFault_Handler\
|
||||
PROC
|
||||
EXPORT UsageFault_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
SVC_Handler PROC
|
||||
EXPORT SVC_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
DebugMon_Handler\
|
||||
PROC
|
||||
EXPORT DebugMon_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
PendSV_Handler PROC
|
||||
EXPORT PendSV_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
SysTick_Handler PROC
|
||||
EXPORT SysTick_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
|
||||
Default_Handler PROC
|
||||
|
||||
EXPORT WWDG_IRQHandler [WEAK]
|
||||
EXPORT PVD_PVM_IRQHandler [WEAK]
|
||||
EXPORT TAMP_STAMP_IRQHandler [WEAK]
|
||||
EXPORT RTC_WKUP_IRQHandler [WEAK]
|
||||
EXPORT FLASH_IRQHandler [WEAK]
|
||||
EXPORT RCC_IRQHandler [WEAK]
|
||||
EXPORT EXTI0_IRQHandler [WEAK]
|
||||
EXPORT EXTI1_IRQHandler [WEAK]
|
||||
EXPORT EXTI2_IRQHandler [WEAK]
|
||||
EXPORT EXTI3_IRQHandler [WEAK]
|
||||
EXPORT EXTI4_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel1_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel2_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel3_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel4_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel5_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel6_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel7_IRQHandler [WEAK]
|
||||
EXPORT ADC1_IRQHandler [WEAK]
|
||||
EXPORT CAN1_TX_IRQHandler [WEAK]
|
||||
EXPORT CAN1_RX0_IRQHandler [WEAK]
|
||||
EXPORT CAN1_RX1_IRQHandler [WEAK]
|
||||
EXPORT CAN1_SCE_IRQHandler [WEAK]
|
||||
EXPORT EXTI9_5_IRQHandler [WEAK]
|
||||
EXPORT TIM1_BRK_TIM15_IRQHandler [WEAK]
|
||||
EXPORT TIM1_UP_TIM16_IRQHandler [WEAK]
|
||||
EXPORT TIM1_TRG_COM_IRQHandler [WEAK]
|
||||
EXPORT TIM1_CC_IRQHandler [WEAK]
|
||||
EXPORT TIM2_IRQHandler [WEAK]
|
||||
EXPORT I2C1_EV_IRQHandler [WEAK]
|
||||
EXPORT I2C1_ER_IRQHandler [WEAK]
|
||||
EXPORT I2C2_EV_IRQHandler [WEAK]
|
||||
EXPORT I2C2_ER_IRQHandler [WEAK]
|
||||
EXPORT SPI1_IRQHandler [WEAK]
|
||||
EXPORT SPI2_IRQHandler [WEAK]
|
||||
EXPORT USART1_IRQHandler [WEAK]
|
||||
EXPORT USART2_IRQHandler [WEAK]
|
||||
EXPORT USART3_IRQHandler [WEAK]
|
||||
EXPORT EXTI15_10_IRQHandler [WEAK]
|
||||
EXPORT RTC_Alarm_IRQHandler [WEAK]
|
||||
EXPORT SDMMC1_IRQHandler [WEAK]
|
||||
EXPORT SPI3_IRQHandler [WEAK]
|
||||
EXPORT TIM6_DAC_IRQHandler [WEAK]
|
||||
EXPORT TIM7_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel1_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel2_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel3_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel4_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel5_IRQHandler [WEAK]
|
||||
EXPORT COMP_IRQHandler [WEAK]
|
||||
EXPORT LPTIM1_IRQHandler [WEAK]
|
||||
EXPORT LPTIM2_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel6_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel7_IRQHandler [WEAK]
|
||||
EXPORT LPUART1_IRQHandler [WEAK]
|
||||
EXPORT QUADSPI_IRQHandler [WEAK]
|
||||
EXPORT I2C3_EV_IRQHandler [WEAK]
|
||||
EXPORT I2C3_ER_IRQHandler [WEAK]
|
||||
EXPORT SAI1_IRQHandler [WEAK]
|
||||
EXPORT SWPMI1_IRQHandler [WEAK]
|
||||
EXPORT TSC_IRQHandler [WEAK]
|
||||
EXPORT RNG_IRQHandler [WEAK]
|
||||
EXPORT FPU_IRQHandler [WEAK]
|
||||
EXPORT CRS_IRQHandler [WEAK]
|
||||
|
||||
WWDG_IRQHandler
|
||||
PVD_PVM_IRQHandler
|
||||
TAMP_STAMP_IRQHandler
|
||||
RTC_WKUP_IRQHandler
|
||||
FLASH_IRQHandler
|
||||
RCC_IRQHandler
|
||||
EXTI0_IRQHandler
|
||||
EXTI1_IRQHandler
|
||||
EXTI2_IRQHandler
|
||||
EXTI3_IRQHandler
|
||||
EXTI4_IRQHandler
|
||||
DMA1_Channel1_IRQHandler
|
||||
DMA1_Channel2_IRQHandler
|
||||
DMA1_Channel3_IRQHandler
|
||||
DMA1_Channel4_IRQHandler
|
||||
DMA1_Channel5_IRQHandler
|
||||
DMA1_Channel6_IRQHandler
|
||||
DMA1_Channel7_IRQHandler
|
||||
ADC1_IRQHandler
|
||||
CAN1_TX_IRQHandler
|
||||
CAN1_RX0_IRQHandler
|
||||
CAN1_RX1_IRQHandler
|
||||
CAN1_SCE_IRQHandler
|
||||
EXTI9_5_IRQHandler
|
||||
TIM1_BRK_TIM15_IRQHandler
|
||||
TIM1_UP_TIM16_IRQHandler
|
||||
TIM1_TRG_COM_IRQHandler
|
||||
TIM1_CC_IRQHandler
|
||||
TIM2_IRQHandler
|
||||
I2C1_EV_IRQHandler
|
||||
I2C1_ER_IRQHandler
|
||||
I2C2_EV_IRQHandler
|
||||
I2C2_ER_IRQHandler
|
||||
SPI1_IRQHandler
|
||||
SPI2_IRQHandler
|
||||
USART1_IRQHandler
|
||||
USART2_IRQHandler
|
||||
USART3_IRQHandler
|
||||
EXTI15_10_IRQHandler
|
||||
RTC_Alarm_IRQHandler
|
||||
SDMMC1_IRQHandler
|
||||
SPI3_IRQHandler
|
||||
TIM6_DAC_IRQHandler
|
||||
TIM7_IRQHandler
|
||||
DMA2_Channel1_IRQHandler
|
||||
DMA2_Channel2_IRQHandler
|
||||
DMA2_Channel3_IRQHandler
|
||||
DMA2_Channel4_IRQHandler
|
||||
DMA2_Channel5_IRQHandler
|
||||
COMP_IRQHandler
|
||||
LPTIM1_IRQHandler
|
||||
LPTIM2_IRQHandler
|
||||
DMA2_Channel6_IRQHandler
|
||||
DMA2_Channel7_IRQHandler
|
||||
LPUART1_IRQHandler
|
||||
QUADSPI_IRQHandler
|
||||
I2C3_EV_IRQHandler
|
||||
I2C3_ER_IRQHandler
|
||||
SAI1_IRQHandler
|
||||
SWPMI1_IRQHandler
|
||||
TSC_IRQHandler
|
||||
RNG_IRQHandler
|
||||
FPU_IRQHandler
|
||||
CRS_IRQHandler
|
||||
|
||||
B .
|
||||
|
||||
ENDP
|
||||
|
||||
ALIGN
|
||||
|
||||
;*******************************************************************************
|
||||
; User Stack and Heap initialization
|
||||
;*******************************************************************************
|
||||
IF :DEF:__MICROLIB
|
||||
|
||||
EXPORT __initial_sp
|
||||
EXPORT __heap_base
|
||||
EXPORT __heap_limit
|
||||
|
||||
ELSE
|
||||
|
||||
IMPORT __use_two_region_memory
|
||||
EXPORT __user_initial_stackheap
|
||||
|
||||
__user_initial_stackheap
|
||||
|
||||
LDR R0, = Heap_Mem
|
||||
LDR R1, =(Stack_Mem + Stack_Size)
|
||||
LDR R2, = (Heap_Mem + Heap_Size)
|
||||
LDR R3, = Stack_Mem
|
||||
BX LR
|
||||
|
||||
ALIGN
|
||||
|
||||
ENDIF
|
||||
|
||||
END
|
||||
|
||||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
|
@ -1,273 +0,0 @@
|
|||
#include "tos_k.h"
|
||||
#include "mp_tos_hal_pin.h"
|
||||
#include "gpio.h"
|
||||
|
||||
#define ST_EXTI_VECTOR_SIZE 16
|
||||
|
||||
#define ST_PORT_NUM(port) ((uint8_t)((port) >> 4) & 0x0F)
|
||||
#define ST_PIN_NUM(port) ((uint8_t)((port) & 0x0F))
|
||||
|
||||
__STATIC__ hal_pin_cb_t hal_pin_irq_handler[ST_EXTI_VECTOR_SIZE];
|
||||
__STATIC__ void *hal_pin_irq_handler_arg[ST_EXTI_VECTOR_SIZE];
|
||||
__STATIC__ GPIO_TypeDef *hal_pin_irq_gpio[ST_EXTI_VECTOR_SIZE];
|
||||
|
||||
__STATIC__ const uint8_t nvic_irq_channel[ST_EXTI_VECTOR_SIZE] = {
|
||||
EXTI0_IRQn, EXTI1_IRQn, EXTI2_IRQn, EXTI3_IRQn,
|
||||
EXTI4_IRQn, EXTI9_5_IRQn, EXTI9_5_IRQn, EXTI9_5_IRQn,
|
||||
EXTI9_5_IRQn, EXTI9_5_IRQn, EXTI15_10_IRQn, EXTI15_10_IRQn,
|
||||
EXTI15_10_IRQn, EXTI15_10_IRQn, EXTI15_10_IRQn, EXTI15_10_IRQn,
|
||||
};
|
||||
|
||||
__STATIC__ int mask2no(uint32_t mask) {
|
||||
for (int i = 0; i < 32; i++) {
|
||||
if ((1U << i) == mask) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
__API__ int tos_hal_pin_init(hal_pin_t *pin, hal_pin_port_t port, hal_pin_mode_t mode)
|
||||
{
|
||||
GPIO_TypeDef *gpiox;
|
||||
uint32_t gpio_pin;
|
||||
GPIO_InitTypeDef gpio_init;
|
||||
|
||||
if (!pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
gpiox = (GPIO_TypeDef *)(GPIOA_BASE + ST_PORT_NUM(port) * 0x0400UL);
|
||||
gpio_pin = 1UL << ST_PIN_NUM(port);
|
||||
|
||||
gpio_init.Pin = gpio_pin;
|
||||
gpio_init.Speed = GPIO_SPEED_FREQ_HIGH;
|
||||
switch (mode) {
|
||||
case HAL_PIN_MODE_OUTPUT:
|
||||
gpio_init.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
gpio_init.Pull = GPIO_NOPULL;
|
||||
break;
|
||||
case HAL_PIN_MODE_OUTPUT_OD:
|
||||
gpio_init.Mode = GPIO_MODE_OUTPUT_OD;
|
||||
gpio_init.Pull = GPIO_NOPULL;
|
||||
break;
|
||||
case HAL_PIN_MODE_INPUT:
|
||||
gpio_init.Mode = GPIO_MODE_INPUT;
|
||||
gpio_init.Pull = GPIO_NOPULL;
|
||||
break;
|
||||
case HAL_PIN_MODE_INPUT_PULLUP:
|
||||
gpio_init.Mode = GPIO_MODE_INPUT;
|
||||
gpio_init.Pull = GPIO_PULLUP;
|
||||
break;
|
||||
case HAL_PIN_MODE_INPUT_PULLDOWN:
|
||||
gpio_init.Mode = GPIO_MODE_INPUT;
|
||||
gpio_init.Pull = GPIO_PULLDOWN;
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
HAL_GPIO_Init((GPIO_TypeDef *)gpiox, &gpio_init);
|
||||
|
||||
pin->port = port;
|
||||
pin->private_gpio = gpiox;
|
||||
pin->private_pin = gpio_pin;
|
||||
pin->mode = mode;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
__API__ int tos_hal_pin_irq(hal_pin_t *pin, hal_pin_irq_t irq)
|
||||
{
|
||||
GPIO_TypeDef *gpiox;
|
||||
uint32_t gpio_pin;
|
||||
uint32_t gpio_pin_num;
|
||||
GPIO_InitTypeDef gpio_init;
|
||||
TOS_CPU_CPSR_ALLOC();
|
||||
|
||||
if (!pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!pin->private_gpio || !pin->private_pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
gpiox = (GPIO_TypeDef *)pin->private_gpio;
|
||||
gpio_pin = (uint32_t)pin->private_pin;
|
||||
gpio_pin_num = mask2no(gpio_pin);
|
||||
if (gpio_pin_num >= ST_EXTI_VECTOR_SIZE) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
TOS_CPU_INT_DISABLE();
|
||||
if (hal_pin_irq_gpio[gpio_pin_num] != NULL && hal_pin_irq_gpio[gpio_pin_num] != gpiox) {
|
||||
TOS_CPU_INT_ENABLE();
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (irq == HAL_PIN_IRQ_NONE) {
|
||||
hal_pin_irq_gpio[gpio_pin_num] = NULL;
|
||||
hal_pin_irq_handler[gpio_pin_num] = NULL;
|
||||
hal_pin_irq_handler_arg[gpio_pin_num] = NULL;
|
||||
TOS_CPU_INT_ENABLE();
|
||||
HAL_NVIC_DisableIRQ(nvic_irq_channel[gpio_pin_num]);
|
||||
} else {
|
||||
hal_pin_irq_gpio[gpio_pin_num] = gpiox;
|
||||
TOS_CPU_INT_ENABLE();
|
||||
gpio_init.Pin = gpio_pin;
|
||||
gpio_init.Speed = GPIO_SPEED_FREQ_HIGH;
|
||||
gpio_init.Mode = GPIO_MODE_IT_RISING_FALLING;
|
||||
switch (irq) {
|
||||
case HAL_PIN_IRQ_RISING:
|
||||
gpio_init.Mode = GPIO_MODE_IT_RISING;
|
||||
break;
|
||||
case HAL_PIN_IRQ_FALLING:
|
||||
gpio_init.Mode = GPIO_MODE_IT_FALLING;
|
||||
break;
|
||||
case HAL_PIN_IRQ_RISING_FALLING:
|
||||
gpio_init.Mode = GPIO_MODE_IT_RISING_FALLING;
|
||||
break;
|
||||
}
|
||||
switch (pin->mode) {
|
||||
case HAL_PIN_MODE_INPUT_PULLUP:
|
||||
gpio_init.Pull = GPIO_PULLUP;
|
||||
break;
|
||||
case HAL_PIN_MODE_INPUT_PULLDOWN:
|
||||
gpio_init.Pull = GPIO_PULLDOWN;
|
||||
break;
|
||||
default:
|
||||
gpio_init.Pull = GPIO_NOPULL;
|
||||
break;
|
||||
}
|
||||
HAL_GPIO_Init(gpiox, &gpio_init);
|
||||
HAL_NVIC_SetPriority(nvic_irq_channel[gpio_pin_num], 2, 0);
|
||||
HAL_NVIC_EnableIRQ(nvic_irq_channel[gpio_pin_num]);
|
||||
|
||||
pin->irq = irq;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
__API__ int tos_hal_pin_irq_callback(hal_pin_t *pin, hal_pin_cb_t callback, void *cb_arg)
|
||||
{
|
||||
GPIO_TypeDef *gpiox;
|
||||
uint32_t gpio_pin;
|
||||
uint32_t gpio_pin_num;
|
||||
TOS_CPU_CPSR_ALLOC();
|
||||
|
||||
if (!pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!pin->private_gpio || !pin->private_pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
gpiox = (GPIO_TypeDef *)pin->private_gpio;
|
||||
gpio_pin = (uint32_t)pin->private_pin;
|
||||
gpio_pin_num = mask2no(gpio_pin);
|
||||
if (gpio_pin_num >= ST_EXTI_VECTOR_SIZE) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
TOS_CPU_INT_DISABLE();
|
||||
if (hal_pin_irq_gpio[gpio_pin_num] != NULL && hal_pin_irq_gpio[gpio_pin_num] != gpiox) {
|
||||
TOS_CPU_INT_ENABLE();
|
||||
return -1;
|
||||
}
|
||||
hal_pin_irq_handler[gpio_pin_num] = gpiox;
|
||||
hal_pin_irq_handler[gpio_pin_num] = callback;
|
||||
hal_pin_irq_handler_arg[gpio_pin_num] = cb_arg;
|
||||
TOS_CPU_INT_ENABLE();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
__API__ int tos_hal_pin_write(hal_pin_t *pin, int state)
|
||||
{
|
||||
GPIO_TypeDef *gpiox;
|
||||
uint32_t gpio_pin;
|
||||
|
||||
if (!pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!pin->private_gpio || !pin->private_pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
gpiox = (GPIO_TypeDef *)pin->private_gpio;
|
||||
gpio_pin = (uint32_t)pin->private_pin;
|
||||
|
||||
HAL_GPIO_WritePin(gpiox, gpio_pin, (state == 0) ? GPIO_PIN_RESET : GPIO_PIN_SET);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
__API__ int tos_hal_pin_read(hal_pin_t *pin)
|
||||
{
|
||||
GPIO_TypeDef *gpiox;
|
||||
uint32_t gpio_pin;
|
||||
|
||||
if (!pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!pin->private_gpio || !pin->private_pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
gpiox = (GPIO_TypeDef *)pin->private_gpio;
|
||||
gpio_pin = (uint32_t)pin->private_pin;
|
||||
|
||||
return (HAL_GPIO_ReadPin(gpiox, gpio_pin) == GPIO_PIN_RESET) ? 0 : 1;
|
||||
}
|
||||
|
||||
__API__ int tos_hal_pin_deinit(hal_pin_t *pin)
|
||||
{
|
||||
GPIO_TypeDef *gpiox;
|
||||
uint32_t gpio_pin;
|
||||
uint32_t gpio_pin_num;
|
||||
TOS_CPU_CPSR_ALLOC();
|
||||
|
||||
if (!pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!pin->private_gpio || !pin->private_pin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
gpiox = (GPIO_TypeDef *)pin->private_gpio;
|
||||
gpio_pin = (uint32_t)pin->private_pin;
|
||||
gpio_pin_num = mask2no(gpio_pin);
|
||||
|
||||
TOS_CPU_INT_DISABLE();
|
||||
if (hal_pin_irq_gpio[gpio_pin_num] == gpiox) {
|
||||
hal_pin_irq_gpio[gpio_pin_num] = NULL;
|
||||
hal_pin_irq_handler[gpio_pin_num] = NULL;
|
||||
hal_pin_irq_handler_arg[gpio_pin_num] = NULL;
|
||||
}
|
||||
TOS_CPU_INT_ENABLE();
|
||||
HAL_GPIO_DeInit(gpiox, gpio_pin);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
|
||||
{
|
||||
uint32_t gpio_pin_num = mask2no(GPIO_Pin);
|
||||
hal_pin_cb_t callback;
|
||||
uint32_t cb_arg;
|
||||
if (gpio_pin_num < ST_EXTI_VECTOR_SIZE) {
|
||||
|
||||
callback = hal_pin_irq_handler[gpio_pin_num];
|
||||
cb_arg = hal_pin_irq_handler_arg[gpio_pin_num];
|
||||
if (callback) {
|
||||
callback(cb_arg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
#ifndef _TOS_HAL_PIN_H_
|
||||
#define _TOS_HAL_PIN_H_
|
||||
|
||||
typedef unsigned char hal_pin_port_t;
|
||||
|
||||
typedef enum hal_pin_mode_en {
|
||||
HAL_PIN_MODE_OUTPUT = 0,
|
||||
HAL_PIN_MODE_OUTPUT_OD,
|
||||
HAL_PIN_MODE_INPUT,
|
||||
HAL_PIN_MODE_INPUT_PULLUP,
|
||||
HAL_PIN_MODE_INPUT_PULLDOWN,
|
||||
} hal_pin_mode_t;
|
||||
|
||||
typedef enum hal_pin_irq_en {
|
||||
HAL_PIN_IRQ_NONE = 0x00,
|
||||
HAL_PIN_IRQ_RISING = 0x01,
|
||||
HAL_PIN_IRQ_FALLING = 0x02,
|
||||
HAL_PIN_IRQ_RISING_FALLING = 0x03,
|
||||
} hal_pin_irq_t;
|
||||
|
||||
typedef struct hal_pin_st {
|
||||
hal_pin_port_t port;
|
||||
void *private_gpio;
|
||||
void *private_pin;
|
||||
hal_pin_mode_t mode;
|
||||
hal_pin_irq_t irq;
|
||||
} hal_pin_t;
|
||||
|
||||
|
||||
typedef void (*hal_pin_cb_t)(void *arg);
|
||||
|
||||
__API__ int tos_hal_pin_init(hal_pin_t *pin, hal_pin_port_t port, hal_pin_mode_t mode);
|
||||
|
||||
__API__ int tos_hal_pin_write(hal_pin_t *pin, int state);
|
||||
|
||||
__API__ int tos_hal_pin_read(hal_pin_t *pin);
|
||||
|
||||
__API__ int tos_hal_pin_mode(hal_pin_t *pin, hal_pin_mode_t mode);
|
||||
|
||||
__API__ int tos_hal_pin_irq(hal_pin_t *pin, hal_pin_irq_t irq);
|
||||
|
||||
__API__ int tos_hal_pin_irq_callback(hal_pin_t *pin, hal_pin_cb_t callback, void *cb_arg);
|
||||
|
||||
|
||||
#endif
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
#include "tos_k.h"
|
||||
#include "mp_tos_hal_spi.h"
|
||||
#include "stm32l4xx_hal.h"
|
||||
#include "spi.h"
|
||||
|
||||
__API__ int tos_hal_spi_init(hal_spi_t *spi, hal_spi_port_t port)
|
||||
{
|
||||
if (!spi) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (port == HAL_SPI_PORT_1) {
|
||||
spi->private_spi = &hspi1;
|
||||
MX_SPI1_Init();
|
||||
} else if (port == HAL_SPI_PORT_2) {
|
||||
spi->private_spi = &hspi2;
|
||||
MX_SPI2_Init();
|
||||
} else if (port == HAL_SPI_PORT_3) {
|
||||
spi->private_spi = &hspi3;
|
||||
MX_SPI3_Init();
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
__API__ int tos_hal_spi_transfer(hal_spi_t *spi, const uint8_t *send_buf, uint8_t *recv_buf, size_t size, uint32_t timeout)
|
||||
{
|
||||
HAL_StatusTypeDef hal_status;
|
||||
SPI_HandleTypeDef *spi_handle;
|
||||
|
||||
if (!spi || (!send_buf && !recv_buf)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!spi->private_spi) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
spi_handle = (SPI_HandleTypeDef *)spi->private_spi;
|
||||
|
||||
if (send_buf && recv_buf) {
|
||||
hal_status = HAL_SPI_TransmitReceive(spi_handle, send_buf, recv_buf, size, timeout);
|
||||
} else if (send_buf) {
|
||||
hal_status = HAL_SPI_Transmit(spi_handle, send_buf, size, timeout);
|
||||
} else if (recv_buf) {
|
||||
hal_status = HAL_SPI_Receive(spi_handle, send_buf, size, timeout);
|
||||
}
|
||||
|
||||
if (hal_status != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
__API__ int tos_hal_spi_deinit(hal_spi_t *spi)
|
||||
{
|
||||
HAL_StatusTypeDef hal_status;
|
||||
SPI_HandleTypeDef *spi_handle;
|
||||
|
||||
if (!spi) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!spi->private_spi) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
spi_handle = (SPI_HandleTypeDef *)spi->private_spi;
|
||||
|
||||
hal_status = HAL_SPI_DeInit(spi_handle);
|
||||
HAL_SPI_MspDeInit(spi_handle);
|
||||
|
||||
if (hal_status != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
#ifndef _TOS_HAL_SPI_H_
|
||||
#define _TOS_HAL_SPI_H_
|
||||
|
||||
typedef enum hal_spi_port_en {
|
||||
HAL_SPI_PORT_0 = 0,
|
||||
HAL_SPI_PORT_1,
|
||||
HAL_SPI_PORT_2,
|
||||
HAL_SPI_PORT_3,
|
||||
} hal_spi_port_t;
|
||||
|
||||
typedef struct hal_spi_st {
|
||||
hal_spi_port_t port;
|
||||
void *private_spi;
|
||||
} hal_spi_t;
|
||||
|
||||
__API__ int tos_hal_spi_init(hal_spi_t *spi, hal_spi_port_t port);
|
||||
|
||||
__API__ int tos_hal_spi_transfer(hal_spi_t *spi, const uint8_t *send_buf, uint8_t *recv_buf, size_t size, uint32_t timeout);
|
||||
|
||||
__API__ int tos_hal_spi_deinit(hal_spi_t *spi);
|
||||
|
||||
#endif
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
#include "tos_k.h"
|
||||
#include "mp_tos_hal_uart.h"
|
||||
#include "stm32l4xx_hal.h"
|
||||
#include "usart.h"
|
||||
|
||||
__API__ int tos_hal_uart_recv_start(hal_uart_t *uart, const uint8_t *buf, size_t size)
|
||||
{
|
||||
HAL_StatusTypeDef hal_status;
|
||||
UART_HandleTypeDef *uart_handle;
|
||||
|
||||
if (!uart || !buf) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!uart->private_uart) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
uart_handle = (UART_HandleTypeDef *)uart->private_uart;
|
||||
|
||||
hal_status = HAL_UART_Receive_IT(uart_handle, (uint8_t *)buf, size);
|
||||
if (hal_status != HAL_OK) {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
#ifndef _MP_TOS_HAL_UART_H_
|
||||
#define _MP_TOS_HAL_UART_H_
|
||||
|
||||
#include "tos_hal_uart.h"
|
||||
|
||||
__API__ int tos_hal_uart_recv_start(hal_uart_t *uart, const uint8_t *buf, size_t size);
|
||||
|
||||
#endif
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
/* board specific config */
|
||||
#define MICROPY_HW_BOARD_NAME "BearPi"
|
||||
#define MICROPY_HW_MCU_NAME "STM32F431RC"
|
||||
|
||||
#define MICROPY_HW_UART_NUM 4
|
||||
#define MICROPY_HW_UART_REPL 2
|
||||
#define MICROPY_HW_SPI_NUM 4
|
||||
|
||||
/* project specific config */
|
||||
#define MICROPY_CONFIG_ROM_LEVEL (MICROPY_CONFIG_ROM_LEVEL_EXTRA_FEATURES)
|
||||
|
||||
#define MP_USING_QSPI_FLASH
|
||||
#define MP_USING_VFS
|
||||
#define MP_USING_NETWORK
|
||||
#define MP_USING_MACHINE_SPI
|
||||
#define MP_USING_MACHINE_I2C
|
||||
|
|
@ -1,109 +0,0 @@
|
|||
|
||||
#include "py/mpconfig.h"
|
||||
#include "py/mphal.h"
|
||||
#include "py/obj.h"
|
||||
#include "py/runtime.h"
|
||||
|
||||
#include "modmachine.h"
|
||||
|
||||
#if !(MP_GEN_HDR)
|
||||
#include "tos_k.h"
|
||||
#include "main.h"
|
||||
#endif
|
||||
|
||||
/********************** Tick *************************/
|
||||
|
||||
static uint32_t systick_get_us() {
|
||||
// get systick value
|
||||
uint32_t counter = SysTick->VAL;
|
||||
uint32_t load = SysTick->LOAD;
|
||||
|
||||
// convert from decrementing to incrementing
|
||||
counter = load - counter;
|
||||
|
||||
return (counter * 1000) / (load + 1);
|
||||
}
|
||||
|
||||
mp_uint_t mp_hal_ticks_us(void) {
|
||||
uint32_t ms = tos_tick2millisec(tos_systick_get());
|
||||
uint32_t us = systick_get_us();
|
||||
return ms * 1000 + us;
|
||||
}
|
||||
|
||||
void mp_hal_delay_us(mp_uint_t usec) {
|
||||
mp_uint_t ms = usec / 1000;
|
||||
mp_uint_t us = usec % 1000;
|
||||
if (ms > 0)
|
||||
mp_hal_delay_ms(ms);
|
||||
mp_uint_t start = mp_hal_ticks_us();
|
||||
while (mp_hal_ticks_us() - start < us) {
|
||||
}
|
||||
}
|
||||
|
||||
/********************** GPIO *************************/
|
||||
|
||||
#define ST_PIN(port_num, pin_num) ((uint8_t)(((port_num) << 4) & 0xF0) | ((pin_num) & 0x0F))
|
||||
|
||||
STATIC const mp_rom_map_elem_t machine_pins_locals_dict_table[] = {
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_INT(ST_PIN(0, 0)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_INT(ST_PIN(0, 1)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_INT(ST_PIN(0, 2)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_INT(ST_PIN(0, 3)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_INT(ST_PIN(0, 4)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_INT(ST_PIN(0, 5)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_INT(ST_PIN(0, 6)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_INT(ST_PIN(0, 7)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A8), MP_ROM_INT(ST_PIN(0, 8)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A9), MP_ROM_INT(ST_PIN(0, 9)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A10), MP_ROM_INT(ST_PIN(0, 10)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A11), MP_ROM_INT(ST_PIN(0, 11)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A12), MP_ROM_INT(ST_PIN(0, 12)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A13), MP_ROM_INT(ST_PIN(0, 13)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A14), MP_ROM_INT(ST_PIN(0, 14)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A15), MP_ROM_INT(ST_PIN(0, 15)) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_B0), MP_ROM_INT(ST_PIN(1, 0)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B1), MP_ROM_INT(ST_PIN(1, 1)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B2), MP_ROM_INT(ST_PIN(1, 2)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B3), MP_ROM_INT(ST_PIN(1, 3)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B4), MP_ROM_INT(ST_PIN(1, 4)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B5), MP_ROM_INT(ST_PIN(1, 5)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B6), MP_ROM_INT(ST_PIN(1, 6)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B7), MP_ROM_INT(ST_PIN(1, 7)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B8), MP_ROM_INT(ST_PIN(1, 8)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B9), MP_ROM_INT(ST_PIN(1, 9)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B10), MP_ROM_INT(ST_PIN(1, 10)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B11), MP_ROM_INT(ST_PIN(1, 11)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B12), MP_ROM_INT(ST_PIN(1, 12)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B13), MP_ROM_INT(ST_PIN(1, 13)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B14), MP_ROM_INT(ST_PIN(1, 14)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_B15), MP_ROM_INT(ST_PIN(1, 15)) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_C0), MP_ROM_INT(ST_PIN(2, 0)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C1), MP_ROM_INT(ST_PIN(2, 1)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C2), MP_ROM_INT(ST_PIN(2, 2)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C3), MP_ROM_INT(ST_PIN(2, 3)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C4), MP_ROM_INT(ST_PIN(2, 4)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C5), MP_ROM_INT(ST_PIN(2, 5)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C6), MP_ROM_INT(ST_PIN(2, 6)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C7), MP_ROM_INT(ST_PIN(2, 7)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C8), MP_ROM_INT(ST_PIN(2, 8)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C9), MP_ROM_INT(ST_PIN(2, 9)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C10), MP_ROM_INT(ST_PIN(2, 10)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C11), MP_ROM_INT(ST_PIN(2, 11)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C12), MP_ROM_INT(ST_PIN(2, 12)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C13), MP_ROM_INT(ST_PIN(2, 13)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C14), MP_ROM_INT(ST_PIN(2, 14)) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_C15), MP_ROM_INT(ST_PIN(2, 15)) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_INT(ST_PIN(3, 2)) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_INT(ST_PIN(2, 13)) }, // C13
|
||||
{ MP_ROM_QSTR(MP_QSTR_KEY1), MP_ROM_INT(ST_PIN(1, 2)) }, // B2
|
||||
{ MP_ROM_QSTR(MP_QSTR_KEY2), MP_ROM_INT(ST_PIN(1, 3)) }, // B3
|
||||
|
||||
};
|
||||
MP_DEFINE_CONST_DICT(machine_pins_locals_dict, machine_pins_locals_dict_table);
|
||||
|
||||
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
#ifndef _MPHALBOARD_H_
|
||||
#define _MPHALBOARD_H_
|
||||
|
||||
#include "py/obj.h"
|
||||
|
||||
extern mp_uint_t mp_hal_ticks_us(void);
|
||||
extern void mp_hal_delay_us(mp_uint_t usec);
|
||||
|
||||
extern const mp_obj_dict_t machine_pins_locals_dict;
|
||||
|
||||
#endif /* _MPHALBOARD_H_ */
|
||||
|
|
@ -1,150 +0,0 @@
|
|||
// Automatically generated by makemoduledefs.py.
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module___main__;
|
||||
#undef MODULE_DEF_MP_QSTR___MAIN__
|
||||
#define MODULE_DEF_MP_QSTR___MAIN__ { MP_ROM_QSTR(MP_QSTR___main__), MP_ROM_PTR(&mp_module___main__) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_thread;
|
||||
#undef MODULE_DEF_MP_QSTR__THREAD
|
||||
#define MODULE_DEF_MP_QSTR__THREAD { MP_ROM_QSTR(MP_QSTR__thread), MP_ROM_PTR(&mp_module_thread) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_uasyncio;
|
||||
#undef MODULE_DEF_MP_QSTR__UASYNCIO
|
||||
#define MODULE_DEF_MP_QSTR__UASYNCIO { MP_ROM_QSTR(MP_QSTR__uasyncio), MP_ROM_PTR(&mp_module_uasyncio) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_builtins;
|
||||
#undef MODULE_DEF_MP_QSTR_BUILTINS
|
||||
#define MODULE_DEF_MP_QSTR_BUILTINS { MP_ROM_QSTR(MP_QSTR_builtins), MP_ROM_PTR(&mp_module_builtins) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_cmath;
|
||||
#undef MODULE_DEF_MP_QSTR_CMATH
|
||||
#define MODULE_DEF_MP_QSTR_CMATH { MP_ROM_QSTR(MP_QSTR_cmath), MP_ROM_PTR(&mp_module_cmath) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_framebuf;
|
||||
#undef MODULE_DEF_MP_QSTR_FRAMEBUF
|
||||
#define MODULE_DEF_MP_QSTR_FRAMEBUF { MP_ROM_QSTR(MP_QSTR_framebuf), MP_ROM_PTR(&mp_module_framebuf) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_gc;
|
||||
#undef MODULE_DEF_MP_QSTR_GC
|
||||
#define MODULE_DEF_MP_QSTR_GC { MP_ROM_QSTR(MP_QSTR_gc), MP_ROM_PTR(&mp_module_gc) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_math;
|
||||
#undef MODULE_DEF_MP_QSTR_MATH
|
||||
#define MODULE_DEF_MP_QSTR_MATH { MP_ROM_QSTR(MP_QSTR_math), MP_ROM_PTR(&mp_module_math) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_micropython;
|
||||
#undef MODULE_DEF_MP_QSTR_MICROPYTHON
|
||||
#define MODULE_DEF_MP_QSTR_MICROPYTHON { MP_ROM_QSTR(MP_QSTR_micropython), MP_ROM_PTR(&mp_module_micropython) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_network;
|
||||
#undef MODULE_DEF_MP_QSTR_NETWORK
|
||||
#define MODULE_DEF_MP_QSTR_NETWORK { MP_ROM_QSTR(MP_QSTR_network), MP_ROM_PTR(&mp_module_network) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_uarray;
|
||||
#undef MODULE_DEF_MP_QSTR_UARRAY
|
||||
#define MODULE_DEF_MP_QSTR_UARRAY { MP_ROM_QSTR(MP_QSTR_uarray), MP_ROM_PTR(&mp_module_uarray) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_ubinascii;
|
||||
#undef MODULE_DEF_MP_QSTR_UBINASCII
|
||||
#define MODULE_DEF_MP_QSTR_UBINASCII { MP_ROM_QSTR(MP_QSTR_ubinascii), MP_ROM_PTR(&mp_module_ubinascii) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_collections;
|
||||
#undef MODULE_DEF_MP_QSTR_UCOLLECTIONS
|
||||
#define MODULE_DEF_MP_QSTR_UCOLLECTIONS { MP_ROM_QSTR(MP_QSTR_ucollections), MP_ROM_PTR(&mp_module_collections) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_uctypes;
|
||||
#undef MODULE_DEF_MP_QSTR_UCTYPES
|
||||
#define MODULE_DEF_MP_QSTR_UCTYPES { MP_ROM_QSTR(MP_QSTR_uctypes), MP_ROM_PTR(&mp_module_uctypes) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_uerrno;
|
||||
#undef MODULE_DEF_MP_QSTR_UERRNO
|
||||
#define MODULE_DEF_MP_QSTR_UERRNO { MP_ROM_QSTR(MP_QSTR_uerrno), MP_ROM_PTR(&mp_module_uerrno) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_uhashlib;
|
||||
#undef MODULE_DEF_MP_QSTR_UHASHLIB
|
||||
#define MODULE_DEF_MP_QSTR_UHASHLIB { MP_ROM_QSTR(MP_QSTR_uhashlib), MP_ROM_PTR(&mp_module_uhashlib) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_uheapq;
|
||||
#undef MODULE_DEF_MP_QSTR_UHEAPQ
|
||||
#define MODULE_DEF_MP_QSTR_UHEAPQ { MP_ROM_QSTR(MP_QSTR_uheapq), MP_ROM_PTR(&mp_module_uheapq) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_io;
|
||||
#undef MODULE_DEF_MP_QSTR_UIO
|
||||
#define MODULE_DEF_MP_QSTR_UIO { MP_ROM_QSTR(MP_QSTR_uio), MP_ROM_PTR(&mp_module_io) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_ujson;
|
||||
#undef MODULE_DEF_MP_QSTR_UJSON
|
||||
#define MODULE_DEF_MP_QSTR_UJSON { MP_ROM_QSTR(MP_QSTR_ujson), MP_ROM_PTR(&mp_module_ujson) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_machine;
|
||||
#undef MODULE_DEF_MP_QSTR_UMACHINE
|
||||
#define MODULE_DEF_MP_QSTR_UMACHINE { MP_ROM_QSTR(MP_QSTR_umachine), MP_ROM_PTR(&mp_module_machine) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_uos;
|
||||
#undef MODULE_DEF_MP_QSTR_UOS
|
||||
#define MODULE_DEF_MP_QSTR_UOS { MP_ROM_QSTR(MP_QSTR_uos), MP_ROM_PTR(&mp_module_uos) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_urandom;
|
||||
#undef MODULE_DEF_MP_QSTR_URANDOM
|
||||
#define MODULE_DEF_MP_QSTR_URANDOM { MP_ROM_QSTR(MP_QSTR_urandom), MP_ROM_PTR(&mp_module_urandom) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_ure;
|
||||
#undef MODULE_DEF_MP_QSTR_URE
|
||||
#define MODULE_DEF_MP_QSTR_URE { MP_ROM_QSTR(MP_QSTR_ure), MP_ROM_PTR(&mp_module_ure) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_uselect;
|
||||
#undef MODULE_DEF_MP_QSTR_USELECT
|
||||
#define MODULE_DEF_MP_QSTR_USELECT { MP_ROM_QSTR(MP_QSTR_uselect), MP_ROM_PTR(&mp_module_uselect) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_usocket;
|
||||
#undef MODULE_DEF_MP_QSTR_USOCKET
|
||||
#define MODULE_DEF_MP_QSTR_USOCKET { MP_ROM_QSTR(MP_QSTR_usocket), MP_ROM_PTR(&mp_module_usocket) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_ustruct;
|
||||
#undef MODULE_DEF_MP_QSTR_USTRUCT
|
||||
#define MODULE_DEF_MP_QSTR_USTRUCT { MP_ROM_QSTR(MP_QSTR_ustruct), MP_ROM_PTR(&mp_module_ustruct) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_sys;
|
||||
#undef MODULE_DEF_MP_QSTR_USYS
|
||||
#define MODULE_DEF_MP_QSTR_USYS { MP_ROM_QSTR(MP_QSTR_usys), MP_ROM_PTR(&mp_module_sys) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_utime;
|
||||
#undef MODULE_DEF_MP_QSTR_UTIME
|
||||
#define MODULE_DEF_MP_QSTR_UTIME { MP_ROM_QSTR(MP_QSTR_utime), MP_ROM_PTR(&mp_module_utime) },
|
||||
|
||||
extern const struct _mp_obj_module_t mp_module_uzlib;
|
||||
#undef MODULE_DEF_MP_QSTR_UZLIB
|
||||
#define MODULE_DEF_MP_QSTR_UZLIB { MP_ROM_QSTR(MP_QSTR_uzlib), MP_ROM_PTR(&mp_module_uzlib) },
|
||||
|
||||
|
||||
#define MICROPY_REGISTERED_MODULES \
|
||||
MODULE_DEF_MP_QSTR_BUILTINS \
|
||||
MODULE_DEF_MP_QSTR_CMATH \
|
||||
MODULE_DEF_MP_QSTR_FRAMEBUF \
|
||||
MODULE_DEF_MP_QSTR_GC \
|
||||
MODULE_DEF_MP_QSTR_MATH \
|
||||
MODULE_DEF_MP_QSTR_MICROPYTHON \
|
||||
MODULE_DEF_MP_QSTR_NETWORK \
|
||||
MODULE_DEF_MP_QSTR_UARRAY \
|
||||
MODULE_DEF_MP_QSTR_UBINASCII \
|
||||
MODULE_DEF_MP_QSTR_UCOLLECTIONS \
|
||||
MODULE_DEF_MP_QSTR_UCTYPES \
|
||||
MODULE_DEF_MP_QSTR_UERRNO \
|
||||
MODULE_DEF_MP_QSTR_UHASHLIB \
|
||||
MODULE_DEF_MP_QSTR_UHEAPQ \
|
||||
MODULE_DEF_MP_QSTR_UIO \
|
||||
MODULE_DEF_MP_QSTR_UJSON \
|
||||
MODULE_DEF_MP_QSTR_UMACHINE \
|
||||
MODULE_DEF_MP_QSTR_UOS \
|
||||
MODULE_DEF_MP_QSTR_URANDOM \
|
||||
MODULE_DEF_MP_QSTR_URE \
|
||||
MODULE_DEF_MP_QSTR_USELECT \
|
||||
MODULE_DEF_MP_QSTR_USOCKET \
|
||||
MODULE_DEF_MP_QSTR_USTRUCT \
|
||||
MODULE_DEF_MP_QSTR_USYS \
|
||||
MODULE_DEF_MP_QSTR_UTIME \
|
||||
MODULE_DEF_MP_QSTR_UZLIB \
|
||||
MODULE_DEF_MP_QSTR__THREAD \
|
||||
MODULE_DEF_MP_QSTR__UASYNCIO \
|
||||
MODULE_DEF_MP_QSTR___MAIN__ \
|
||||
// MICROPY_REGISTERED_MODULES
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
// This file was generated by py/makeversionhdr.py
|
||||
#define MICROPY_GIT_TAG "v2.5.0-73-g0e22ad73-dirty"
|
||||
#define MICROPY_GIT_HASH "0e22ad73-dirty"
|
||||
#define MICROPY_BUILD_DATE "2022-09-25"
|
||||
|
|
@ -1,752 +0,0 @@
|
|||
// This file was automatically generated by makeqstrdata.py
|
||||
|
||||
QDEF(MP_QSTRnull, 0, 0, "")
|
||||
QDEF(MP_QSTR_, 5381, 0, "")
|
||||
QDEF(MP_QSTR___dir__, 36730, 7, "__dir__")
|
||||
QDEF(MP_QSTR__0x0a_, 46511, 1, "\x0a")
|
||||
QDEF(MP_QSTR__space_, 46469, 1, " ")
|
||||
QDEF(MP_QSTR__star_, 46479, 1, "*")
|
||||
QDEF(MP_QSTR__slash_, 46474, 1, "/")
|
||||
QDEF(MP_QSTR__lt_module_gt_, 38077, 8, "<module>")
|
||||
QDEF(MP_QSTR__, 46586, 1, "_")
|
||||
QDEF(MP_QSTR___call__, 63911, 8, "__call__")
|
||||
QDEF(MP_QSTR___class__, 50475, 9, "__class__")
|
||||
QDEF(MP_QSTR___delitem__, 13821, 11, "__delitem__")
|
||||
QDEF(MP_QSTR___enter__, 47725, 9, "__enter__")
|
||||
QDEF(MP_QSTR___exit__, 63557, 8, "__exit__")
|
||||
QDEF(MP_QSTR___getattr__, 63552, 11, "__getattr__")
|
||||
QDEF(MP_QSTR___getitem__, 14630, 11, "__getitem__")
|
||||
QDEF(MP_QSTR___hash__, 51447, 8, "__hash__")
|
||||
QDEF(MP_QSTR___init__, 42335, 8, "__init__")
|
||||
QDEF(MP_QSTR___int__, 6934, 7, "__int__")
|
||||
QDEF(MP_QSTR___iter__, 13007, 8, "__iter__")
|
||||
QDEF(MP_QSTR___len__, 45282, 7, "__len__")
|
||||
QDEF(MP_QSTR___main__, 5006, 8, "__main__")
|
||||
QDEF(MP_QSTR___module__, 12543, 10, "__module__")
|
||||
QDEF(MP_QSTR___name__, 14562, 8, "__name__")
|
||||
QDEF(MP_QSTR___new__, 5497, 7, "__new__")
|
||||
QDEF(MP_QSTR___next__, 29442, 8, "__next__")
|
||||
QDEF(MP_QSTR___qualname__, 107, 12, "__qualname__")
|
||||
QDEF(MP_QSTR___repr__, 2832, 8, "__repr__")
|
||||
QDEF(MP_QSTR___setitem__, 15922, 11, "__setitem__")
|
||||
QDEF(MP_QSTR___str__, 52688, 7, "__str__")
|
||||
QDEF(MP_QSTR_ArithmeticError, 35885, 15, "ArithmeticError")
|
||||
QDEF(MP_QSTR_AssertionError, 23191, 14, "AssertionError")
|
||||
QDEF(MP_QSTR_AttributeError, 56865, 14, "AttributeError")
|
||||
QDEF(MP_QSTR_BaseException, 37383, 13, "BaseException")
|
||||
QDEF(MP_QSTR_EOFError, 49041, 8, "EOFError")
|
||||
QDEF(MP_QSTR_Ellipsis, 57584, 8, "Ellipsis")
|
||||
QDEF(MP_QSTR_Exception, 10738, 9, "Exception")
|
||||
QDEF(MP_QSTR_GeneratorExit, 25110, 13, "GeneratorExit")
|
||||
QDEF(MP_QSTR_ImportError, 39968, 11, "ImportError")
|
||||
QDEF(MP_QSTR_IndentationError, 8284, 16, "IndentationError")
|
||||
QDEF(MP_QSTR_IndexError, 44419, 10, "IndexError")
|
||||
QDEF(MP_QSTR_KeyError, 234, 8, "KeyError")
|
||||
QDEF(MP_QSTR_KeyboardInterrupt, 58031, 17, "KeyboardInterrupt")
|
||||
QDEF(MP_QSTR_LookupError, 27135, 11, "LookupError")
|
||||
QDEF(MP_QSTR_MemoryError, 33756, 11, "MemoryError")
|
||||
QDEF(MP_QSTR_NameError, 11706, 9, "NameError")
|
||||
QDEF(MP_QSTR_NoneType, 26647, 8, "NoneType")
|
||||
QDEF(MP_QSTR_NotImplementedError, 39110, 19, "NotImplementedError")
|
||||
QDEF(MP_QSTR_OSError, 26017, 7, "OSError")
|
||||
QDEF(MP_QSTR_OverflowError, 57729, 13, "OverflowError")
|
||||
QDEF(MP_QSTR_RuntimeError, 61793, 12, "RuntimeError")
|
||||
QDEF(MP_QSTR_StopIteration, 7402, 13, "StopIteration")
|
||||
QDEF(MP_QSTR_SyntaxError, 36756, 11, "SyntaxError")
|
||||
QDEF(MP_QSTR_SystemExit, 65312, 10, "SystemExit")
|
||||
QDEF(MP_QSTR_TypeError, 38437, 9, "TypeError")
|
||||
QDEF(MP_QSTR_ValueError, 34710, 10, "ValueError")
|
||||
QDEF(MP_QSTR_ZeroDivisionError, 10166, 17, "ZeroDivisionError")
|
||||
QDEF(MP_QSTR_abs, 12949, 3, "abs")
|
||||
QDEF(MP_QSTR_all, 13124, 3, "all")
|
||||
QDEF(MP_QSTR_any, 13075, 3, "any")
|
||||
QDEF(MP_QSTR_append, 38763, 6, "append")
|
||||
QDEF(MP_QSTR_args, 50882, 4, "args")
|
||||
QDEF(MP_QSTR_bool, 15595, 4, "bool")
|
||||
QDEF(MP_QSTR_builtins, 12791, 8, "builtins")
|
||||
QDEF(MP_QSTR_bytearray, 41846, 9, "bytearray")
|
||||
QDEF(MP_QSTR_bytecode, 32034, 8, "bytecode")
|
||||
QDEF(MP_QSTR_bytes, 45660, 5, "bytes")
|
||||
QDEF(MP_QSTR_callable, 28685, 8, "callable")
|
||||
QDEF(MP_QSTR_chr, 19676, 3, "chr")
|
||||
QDEF(MP_QSTR_classmethod, 36020, 11, "classmethod")
|
||||
QDEF(MP_QSTR_clear, 41084, 5, "clear")
|
||||
QDEF(MP_QSTR_close, 26419, 5, "close")
|
||||
QDEF(MP_QSTR_const, 65472, 5, "const")
|
||||
QDEF(MP_QSTR_copy, 56288, 4, "copy")
|
||||
QDEF(MP_QSTR_count, 19878, 5, "count")
|
||||
QDEF(MP_QSTR_dict, 64575, 4, "dict")
|
||||
QDEF(MP_QSTR_dir, 7930, 3, "dir")
|
||||
QDEF(MP_QSTR_divmod, 1208, 6, "divmod")
|
||||
QDEF(MP_QSTR_end, 8970, 3, "end")
|
||||
QDEF(MP_QSTR_endswith, 41755, 8, "endswith")
|
||||
QDEF(MP_QSTR_eval, 42651, 4, "eval")
|
||||
QDEF(MP_QSTR_exec, 49182, 4, "exec")
|
||||
QDEF(MP_QSTR_extend, 59491, 6, "extend")
|
||||
QDEF(MP_QSTR_find, 13312, 4, "find")
|
||||
QDEF(MP_QSTR_format, 13094, 6, "format")
|
||||
QDEF(MP_QSTR_from_bytes, 29749, 10, "from_bytes")
|
||||
QDEF(MP_QSTR_get, 15155, 3, "get")
|
||||
QDEF(MP_QSTR_getattr, 6080, 7, "getattr")
|
||||
QDEF(MP_QSTR_globals, 18845, 7, "globals")
|
||||
QDEF(MP_QSTR_hasattr, 45196, 7, "hasattr")
|
||||
QDEF(MP_QSTR_hash, 28855, 4, "hash")
|
||||
QDEF(MP_QSTR_id, 28456, 2, "id")
|
||||
QDEF(MP_QSTR_index, 10363, 5, "index")
|
||||
QDEF(MP_QSTR_insert, 21522, 6, "insert")
|
||||
QDEF(MP_QSTR_int, 21270, 3, "int")
|
||||
QDEF(MP_QSTR_isalpha, 14315, 7, "isalpha")
|
||||
QDEF(MP_QSTR_isdigit, 39592, 7, "isdigit")
|
||||
QDEF(MP_QSTR_isinstance, 48822, 10, "isinstance")
|
||||
QDEF(MP_QSTR_islower, 33020, 7, "islower")
|
||||
QDEF(MP_QSTR_isspace, 63579, 7, "isspace")
|
||||
QDEF(MP_QSTR_issubclass, 32693, 10, "issubclass")
|
||||
QDEF(MP_QSTR_isupper, 42973, 7, "isupper")
|
||||
QDEF(MP_QSTR_items, 21475, 5, "items")
|
||||
QDEF(MP_QSTR_iter, 8591, 4, "iter")
|
||||
QDEF(MP_QSTR_join, 23719, 4, "join")
|
||||
QDEF(MP_QSTR_key, 27954, 3, "key")
|
||||
QDEF(MP_QSTR_keys, 4865, 4, "keys")
|
||||
QDEF(MP_QSTR_len, 16482, 3, "len")
|
||||
QDEF(MP_QSTR_list, 7463, 4, "list")
|
||||
QDEF(MP_QSTR_little, 27273, 6, "little")
|
||||
QDEF(MP_QSTR_locals, 41275, 6, "locals")
|
||||
QDEF(MP_QSTR_lower, 52166, 5, "lower")
|
||||
QDEF(MP_QSTR_lstrip, 47589, 6, "lstrip")
|
||||
QDEF(MP_QSTR_main, 47054, 4, "main")
|
||||
QDEF(MP_QSTR_map, 17337, 3, "map")
|
||||
QDEF(MP_QSTR_micropython, 31755, 11, "micropython")
|
||||
QDEF(MP_QSTR_next, 34882, 4, "next")
|
||||
QDEF(MP_QSTR_object, 36240, 6, "object")
|
||||
QDEF(MP_QSTR_open, 15057, 4, "open")
|
||||
QDEF(MP_QSTR_ord, 24092, 3, "ord")
|
||||
QDEF(MP_QSTR_pop, 29482, 3, "pop")
|
||||
QDEF(MP_QSTR_popitem, 11455, 7, "popitem")
|
||||
QDEF(MP_QSTR_pow, 29485, 3, "pow")
|
||||
QDEF(MP_QSTR_print, 50772, 5, "print")
|
||||
QDEF(MP_QSTR_range, 24090, 5, "range")
|
||||
QDEF(MP_QSTR_read, 63927, 4, "read")
|
||||
QDEF(MP_QSTR_readinto, 48971, 8, "readinto")
|
||||
QDEF(MP_QSTR_readline, 6649, 8, "readline")
|
||||
QDEF(MP_QSTR_remove, 35427, 6, "remove")
|
||||
QDEF(MP_QSTR_replace, 9545, 7, "replace")
|
||||
QDEF(MP_QSTR_repr, 63440, 4, "repr")
|
||||
QDEF(MP_QSTR_reverse, 10789, 7, "reverse")
|
||||
QDEF(MP_QSTR_rfind, 40146, 5, "rfind")
|
||||
QDEF(MP_QSTR_rindex, 11241, 6, "rindex")
|
||||
QDEF(MP_QSTR_round, 9703, 5, "round")
|
||||
QDEF(MP_QSTR_rsplit, 165, 6, "rsplit")
|
||||
QDEF(MP_QSTR_rstrip, 38203, 6, "rstrip")
|
||||
QDEF(MP_QSTR_self, 30585, 4, "self")
|
||||
QDEF(MP_QSTR_send, 30393, 4, "send")
|
||||
QDEF(MP_QSTR_sep, 36643, 3, "sep")
|
||||
QDEF(MP_QSTR_set, 36647, 3, "set")
|
||||
QDEF(MP_QSTR_setattr, 43220, 7, "setattr")
|
||||
QDEF(MP_QSTR_setdefault, 41836, 10, "setdefault")
|
||||
QDEF(MP_QSTR_sort, 40383, 4, "sort")
|
||||
QDEF(MP_QSTR_sorted, 5470, 6, "sorted")
|
||||
QDEF(MP_QSTR_split, 13239, 5, "split")
|
||||
QDEF(MP_QSTR_start, 61317, 5, "start")
|
||||
QDEF(MP_QSTR_startswith, 59508, 10, "startswith")
|
||||
QDEF(MP_QSTR_staticmethod, 44898, 12, "staticmethod")
|
||||
QDEF(MP_QSTR_step, 13911, 4, "step")
|
||||
QDEF(MP_QSTR_stop, 13981, 4, "stop")
|
||||
QDEF(MP_QSTR_str, 36176, 3, "str")
|
||||
QDEF(MP_QSTR_strip, 7721, 5, "strip")
|
||||
QDEF(MP_QSTR_sum, 36142, 3, "sum")
|
||||
QDEF(MP_QSTR_super, 45764, 5, "super")
|
||||
QDEF(MP_QSTR_throw, 17587, 5, "throw")
|
||||
QDEF(MP_QSTR_to_bytes, 16088, 8, "to_bytes")
|
||||
QDEF(MP_QSTR_tuple, 16893, 5, "tuple")
|
||||
QDEF(MP_QSTR_type, 32669, 4, "type")
|
||||
QDEF(MP_QSTR_update, 30388, 6, "update")
|
||||
QDEF(MP_QSTR_upper, 37927, 5, "upper")
|
||||
QDEF(MP_QSTR_utf_hyphen_8, 33463, 5, "utf-8")
|
||||
QDEF(MP_QSTR_value, 13390, 5, "value")
|
||||
QDEF(MP_QSTR_values, 48765, 6, "values")
|
||||
QDEF(MP_QSTR_write, 43160, 5, "write")
|
||||
QDEF(MP_QSTR_zip, 44262, 3, "zip")
|
||||
QDEF(MP_QSTR___abs__, 54933, 7, "__abs__")
|
||||
QDEF(MP_QSTR___add__, 33476, 7, "__add__")
|
||||
QDEF(MP_QSTR___aenter__, 33868, 10, "__aenter__")
|
||||
QDEF(MP_QSTR___aexit__, 53188, 9, "__aexit__")
|
||||
QDEF(MP_QSTR___aiter__, 11086, 9, "__aiter__")
|
||||
QDEF(MP_QSTR___and__, 56078, 7, "__and__")
|
||||
QDEF(MP_QSTR___anext__, 46211, 9, "__anext__")
|
||||
QDEF(MP_QSTR___bases__, 12291, 9, "__bases__")
|
||||
QDEF(MP_QSTR___bool__, 25899, 8, "__bool__")
|
||||
QDEF(MP_QSTR___build_class__, 34882, 15, "__build_class__")
|
||||
QDEF(MP_QSTR___contains__, 24518, 12, "__contains__")
|
||||
QDEF(MP_QSTR___del__, 14184, 7, "__del__")
|
||||
QDEF(MP_QSTR___delattr__, 30555, 11, "__delattr__")
|
||||
QDEF(MP_QSTR___delete__, 60892, 10, "__delete__")
|
||||
QDEF(MP_QSTR___dict__, 21631, 8, "__dict__")
|
||||
QDEF(MP_QSTR___divmod__, 4472, 10, "__divmod__")
|
||||
QDEF(MP_QSTR___eq__, 15985, 6, "__eq__")
|
||||
QDEF(MP_QSTR___file__, 21507, 8, "__file__")
|
||||
QDEF(MP_QSTR___floordiv__, 24390, 12, "__floordiv__")
|
||||
QDEF(MP_QSTR___ge__, 18087, 6, "__ge__")
|
||||
QDEF(MP_QSTR___get__, 36787, 7, "__get__")
|
||||
QDEF(MP_QSTR___globals__, 44701, 11, "__globals__")
|
||||
QDEF(MP_QSTR___gt__, 33462, 6, "__gt__")
|
||||
QDEF(MP_QSTR___iadd__, 19053, 8, "__iadd__")
|
||||
QDEF(MP_QSTR___iand__, 8615, 8, "__iand__")
|
||||
QDEF(MP_QSTR___ifloordiv__, 3919, 13, "__ifloordiv__")
|
||||
QDEF(MP_QSTR___ilshift__, 41600, 11, "__ilshift__")
|
||||
QDEF(MP_QSTR___imatmul__, 28352, 11, "__imatmul__")
|
||||
QDEF(MP_QSTR___imod__, 34378, 8, "__imod__")
|
||||
QDEF(MP_QSTR___import__, 15928, 10, "__import__")
|
||||
QDEF(MP_QSTR___imul__, 52760, 8, "__imul__")
|
||||
QDEF(MP_QSTR___invert__, 30711, 10, "__invert__")
|
||||
QDEF(MP_QSTR___ior__, 36849, 7, "__ior__")
|
||||
QDEF(MP_QSTR___ipow__, 54660, 8, "__ipow__")
|
||||
QDEF(MP_QSTR___irshift__, 63710, 11, "__irshift__")
|
||||
QDEF(MP_QSTR___isub__, 30728, 8, "__isub__")
|
||||
QDEF(MP_QSTR___itruediv__, 545, 12, "__itruediv__")
|
||||
QDEF(MP_QSTR___ixor__, 47369, 8, "__ixor__")
|
||||
QDEF(MP_QSTR___le__, 5068, 6, "__le__")
|
||||
QDEF(MP_QSTR___lshift__, 34825, 10, "__lshift__")
|
||||
QDEF(MP_QSTR___lt__, 26717, 6, "__lt__")
|
||||
QDEF(MP_QSTR___matmul__, 62281, 10, "__matmul__")
|
||||
QDEF(MP_QSTR___mod__, 14179, 7, "__mod__")
|
||||
QDEF(MP_QSTR___mul__, 16945, 7, "__mul__")
|
||||
QDEF(MP_QSTR___ne__, 2830, 6, "__ne__")
|
||||
QDEF(MP_QSTR___neg__, 54633, 7, "__neg__")
|
||||
QDEF(MP_QSTR___or__, 47928, 6, "__or__")
|
||||
QDEF(MP_QSTR___path__, 9160, 8, "__path__")
|
||||
QDEF(MP_QSTR___pos__, 61481, 7, "__pos__")
|
||||
QDEF(MP_QSTR___pow__, 45, 7, "__pow__")
|
||||
QDEF(MP_QSTR___radd__, 50454, 8, "__radd__")
|
||||
QDEF(MP_QSTR___rand__, 11996, 8, "__rand__")
|
||||
QDEF(MP_QSTR___repl_print__, 47872, 14, "__repl_print__")
|
||||
QDEF(MP_QSTR___reversed__, 65377, 12, "__reversed__")
|
||||
QDEF(MP_QSTR___rfloordiv__, 38996, 13, "__rfloordiv__")
|
||||
QDEF(MP_QSTR___rlshift__, 53531, 11, "__rlshift__")
|
||||
QDEF(MP_QSTR___rmatmul__, 987, 11, "__rmatmul__")
|
||||
QDEF(MP_QSTR___rmod__, 35377, 8, "__rmod__")
|
||||
QDEF(MP_QSTR___rmul__, 355, 8, "__rmul__")
|
||||
QDEF(MP_QSTR___ror__, 56362, 7, "__ror__")
|
||||
QDEF(MP_QSTR___rpow__, 39679, 8, "__rpow__")
|
||||
QDEF(MP_QSTR___rrshift__, 40389, 11, "__rrshift__")
|
||||
QDEF(MP_QSTR___rshift__, 38999, 10, "__rshift__")
|
||||
QDEF(MP_QSTR___rsub__, 30579, 8, "__rsub__")
|
||||
QDEF(MP_QSTR___rtruediv__, 55130, 12, "__rtruediv__")
|
||||
QDEF(MP_QSTR___rxor__, 34546, 8, "__rxor__")
|
||||
QDEF(MP_QSTR___set__, 45991, 7, "__set__")
|
||||
QDEF(MP_QSTR___setattr__, 6484, 11, "__setattr__")
|
||||
QDEF(MP_QSTR___sub__, 2337, 7, "__sub__")
|
||||
QDEF(MP_QSTR___traceback__, 53071, 13, "__traceback__")
|
||||
QDEF(MP_QSTR___truediv__, 61320, 11, "__truediv__")
|
||||
QDEF(MP_QSTR___xor__, 60448, 7, "__xor__")
|
||||
QDEF(MP_QSTR__gt__gt__gt__space_, 44187, 4, ">>> ")
|
||||
QDEF(MP_QSTR__dot__dot__dot__space_, 10379, 4, "... ")
|
||||
QDEF(MP_QSTR__percent__hash_o, 6764, 3, "%#o")
|
||||
QDEF(MP_QSTR__percent__hash_x, 6779, 3, "%#x")
|
||||
QDEF(MP_QSTR__brace_open__colon__hash_b_brace_close_, 14168, 5, "{:#b}")
|
||||
QDEF(MP_QSTR_maximum_space_recursion_space_depth_space_exceeded, 7795, 32, "maximum recursion depth exceeded")
|
||||
QDEF(MP_QSTR__lt_lambda_gt_, 35968, 8, "<lambda>")
|
||||
QDEF(MP_QSTR__lt_listcomp_gt_, 5588, 10, "<listcomp>")
|
||||
QDEF(MP_QSTR__lt_dictcomp_gt_, 36300, 10, "<dictcomp>")
|
||||
QDEF(MP_QSTR__lt_setcomp_gt_, 20820, 9, "<setcomp>")
|
||||
QDEF(MP_QSTR__lt_genexpr_gt_, 27188, 9, "<genexpr>")
|
||||
QDEF(MP_QSTR__lt_string_gt_, 21330, 8, "<string>")
|
||||
QDEF(MP_QSTR__lt_stdin_gt_, 25571, 7, "<stdin>")
|
||||
QDEF(MP_QSTR_A0, 29268, 2, "A0")
|
||||
QDEF(MP_QSTR_A1, 29269, 2, "A1")
|
||||
QDEF(MP_QSTR_A10, 48325, 3, "A10")
|
||||
QDEF(MP_QSTR_A11, 48324, 3, "A11")
|
||||
QDEF(MP_QSTR_A12, 48327, 3, "A12")
|
||||
QDEF(MP_QSTR_A13, 48326, 3, "A13")
|
||||
QDEF(MP_QSTR_A14, 48321, 3, "A14")
|
||||
QDEF(MP_QSTR_A15, 48320, 3, "A15")
|
||||
QDEF(MP_QSTR_A2, 29270, 2, "A2")
|
||||
QDEF(MP_QSTR_A3, 29271, 2, "A3")
|
||||
QDEF(MP_QSTR_A4, 29264, 2, "A4")
|
||||
QDEF(MP_QSTR_A5, 29265, 2, "A5")
|
||||
QDEF(MP_QSTR_A6, 29266, 2, "A6")
|
||||
QDEF(MP_QSTR_A7, 29267, 2, "A7")
|
||||
QDEF(MP_QSTR_A8, 29276, 2, "A8")
|
||||
QDEF(MP_QSTR_A9, 29277, 2, "A9")
|
||||
QDEF(MP_QSTR_AF_INET, 47083, 7, "AF_INET")
|
||||
QDEF(MP_QSTR_AF_INET6, 46461, 8, "AF_INET6")
|
||||
QDEF(MP_QSTR_AP_IF, 38404, 5, "AP_IF")
|
||||
QDEF(MP_QSTR_ARRAY, 31324, 5, "ARRAY")
|
||||
QDEF(MP_QSTR_B0, 29431, 2, "B0")
|
||||
QDEF(MP_QSTR_B1, 29430, 2, "B1")
|
||||
QDEF(MP_QSTR_B10, 53638, 3, "B10")
|
||||
QDEF(MP_QSTR_B11, 53639, 3, "B11")
|
||||
QDEF(MP_QSTR_B12, 53636, 3, "B12")
|
||||
QDEF(MP_QSTR_B13, 53637, 3, "B13")
|
||||
QDEF(MP_QSTR_B14, 53634, 3, "B14")
|
||||
QDEF(MP_QSTR_B15, 53635, 3, "B15")
|
||||
QDEF(MP_QSTR_B2, 29429, 2, "B2")
|
||||
QDEF(MP_QSTR_B3, 29428, 2, "B3")
|
||||
QDEF(MP_QSTR_B4, 29427, 2, "B4")
|
||||
QDEF(MP_QSTR_B5, 29426, 2, "B5")
|
||||
QDEF(MP_QSTR_B6, 29425, 2, "B6")
|
||||
QDEF(MP_QSTR_B7, 29424, 2, "B7")
|
||||
QDEF(MP_QSTR_B8, 29439, 2, "B8")
|
||||
QDEF(MP_QSTR_B9, 29438, 2, "B9")
|
||||
QDEF(MP_QSTR_BFINT16, 58005, 7, "BFINT16")
|
||||
QDEF(MP_QSTR_BFINT32, 57939, 7, "BFINT32")
|
||||
QDEF(MP_QSTR_BFINT8, 39498, 6, "BFINT8")
|
||||
QDEF(MP_QSTR_BFUINT16, 42560, 8, "BFUINT16")
|
||||
QDEF(MP_QSTR_BFUINT32, 42502, 8, "BFUINT32")
|
||||
QDEF(MP_QSTR_BFUINT8, 44991, 7, "BFUINT8")
|
||||
QDEF(MP_QSTR_BF_LEN, 45081, 6, "BF_LEN")
|
||||
QDEF(MP_QSTR_BF_POS, 40274, 6, "BF_POS")
|
||||
QDEF(MP_QSTR_BIG_ENDIAN, 20991, 10, "BIG_ENDIAN")
|
||||
QDEF(MP_QSTR_BytesIO, 46874, 7, "BytesIO")
|
||||
QDEF(MP_QSTR_C0, 29334, 2, "C0")
|
||||
QDEF(MP_QSTR_C1, 29335, 2, "C1")
|
||||
QDEF(MP_QSTR_C10, 50503, 3, "C10")
|
||||
QDEF(MP_QSTR_C11, 50502, 3, "C11")
|
||||
QDEF(MP_QSTR_C12, 50501, 3, "C12")
|
||||
QDEF(MP_QSTR_C13, 50500, 3, "C13")
|
||||
QDEF(MP_QSTR_C14, 50499, 3, "C14")
|
||||
QDEF(MP_QSTR_C15, 50498, 3, "C15")
|
||||
QDEF(MP_QSTR_C2, 29332, 2, "C2")
|
||||
QDEF(MP_QSTR_C3, 29333, 2, "C3")
|
||||
QDEF(MP_QSTR_C4, 29330, 2, "C4")
|
||||
QDEF(MP_QSTR_C5, 29331, 2, "C5")
|
||||
QDEF(MP_QSTR_C6, 29328, 2, "C6")
|
||||
QDEF(MP_QSTR_C7, 29329, 2, "C7")
|
||||
QDEF(MP_QSTR_C8, 29342, 2, "C8")
|
||||
QDEF(MP_QSTR_C9, 29343, 2, "C9")
|
||||
QDEF(MP_QSTR_CancelledError, 39926, 14, "CancelledError")
|
||||
QDEF(MP_QSTR_D2, 29235, 2, "D2")
|
||||
QDEF(MP_QSTR_DecompIO, 46995, 8, "DecompIO")
|
||||
QDEF(MP_QSTR_EACCES, 49719, 6, "EACCES")
|
||||
QDEF(MP_QSTR_EADDRINUSE, 4375, 10, "EADDRINUSE")
|
||||
QDEF(MP_QSTR_EAGAIN, 60448, 6, "EAGAIN")
|
||||
QDEF(MP_QSTR_EALREADY, 5446, 8, "EALREADY")
|
||||
QDEF(MP_QSTR_EBADF, 41825, 5, "EBADF")
|
||||
QDEF(MP_QSTR_ECONNABORTED, 43815, 12, "ECONNABORTED")
|
||||
QDEF(MP_QSTR_ECONNREFUSED, 11322, 12, "ECONNREFUSED")
|
||||
QDEF(MP_QSTR_ECONNRESET, 64281, 10, "ECONNRESET")
|
||||
QDEF(MP_QSTR_EEXIST, 44371, 6, "EEXIST")
|
||||
QDEF(MP_QSTR_EHOSTUNREACH, 9606, 12, "EHOSTUNREACH")
|
||||
QDEF(MP_QSTR_EINPROGRESS, 41114, 11, "EINPROGRESS")
|
||||
QDEF(MP_QSTR_EINVAL, 65372, 6, "EINVAL")
|
||||
QDEF(MP_QSTR_EIO, 42630, 3, "EIO")
|
||||
QDEF(MP_QSTR_EISDIR, 20389, 6, "EISDIR")
|
||||
QDEF(MP_QSTR_ENOBUFS, 34787, 7, "ENOBUFS")
|
||||
QDEF(MP_QSTR_ENODEV, 26550, 6, "ENODEV")
|
||||
QDEF(MP_QSTR_ENOENT, 25950, 6, "ENOENT")
|
||||
QDEF(MP_QSTR_ENOMEM, 34212, 6, "ENOMEM")
|
||||
QDEF(MP_QSTR_ENOTCONN, 55161, 8, "ENOTCONN")
|
||||
QDEF(MP_QSTR_EOPNOTSUPP, 38828, 10, "EOPNOTSUPP")
|
||||
QDEF(MP_QSTR_EPERM, 32746, 5, "EPERM")
|
||||
QDEF(MP_QSTR_ESP8266, 55433, 7, "ESP8266")
|
||||
QDEF(MP_QSTR_ETIMEDOUT, 63743, 9, "ETIMEDOUT")
|
||||
QDEF(MP_QSTR_FLOAT32, 34740, 7, "FLOAT32")
|
||||
QDEF(MP_QSTR_FLOAT64, 34583, 7, "FLOAT64")
|
||||
QDEF(MP_QSTR_FileIO, 5573, 6, "FileIO")
|
||||
QDEF(MP_QSTR_FrameBuffer, 48856, 11, "FrameBuffer")
|
||||
QDEF(MP_QSTR_FrameBuffer1, 39401, 12, "FrameBuffer1")
|
||||
QDEF(MP_QSTR_GS2_HMSB, 49960, 8, "GS2_HMSB")
|
||||
QDEF(MP_QSTR_GS4_HMSB, 29550, 8, "GS4_HMSB")
|
||||
QDEF(MP_QSTR_GS8, 49321, 3, "GS8")
|
||||
QDEF(MP_QSTR_IN, 29474, 2, "IN")
|
||||
QDEF(MP_QSTR_INT, 55094, 3, "INT")
|
||||
QDEF(MP_QSTR_INT16, 30353, 5, "INT16")
|
||||
QDEF(MP_QSTR_INT32, 30295, 5, "INT32")
|
||||
QDEF(MP_QSTR_INT64, 30196, 5, "INT64")
|
||||
QDEF(MP_QSTR_INT8, 48590, 4, "INT8")
|
||||
QDEF(MP_QSTR_IN_PULLDOWN, 47946, 11, "IN_PULLDOWN")
|
||||
QDEF(MP_QSTR_IN_PULLUP, 55837, 9, "IN_PULLUP")
|
||||
QDEF(MP_QSTR_IOBase, 48694, 6, "IOBase")
|
||||
QDEF(MP_QSTR_IRQ_FALLING, 49207, 11, "IRQ_FALLING")
|
||||
QDEF(MP_QSTR_IRQ_RISING, 60792, 10, "IRQ_RISING")
|
||||
QDEF(MP_QSTR_KEY1, 4963, 4, "KEY1")
|
||||
QDEF(MP_QSTR_KEY2, 4960, 4, "KEY2")
|
||||
QDEF(MP_QSTR_LED, 56456, 3, "LED")
|
||||
QDEF(MP_QSTR_LITTLE_ENDIAN, 23487, 13, "LITTLE_ENDIAN")
|
||||
QDEF(MP_QSTR_LONG, 25871, 4, "LONG")
|
||||
QDEF(MP_QSTR_LONGLONG, 54405, 8, "LONGLONG")
|
||||
QDEF(MP_QSTR_LSB, 57048, 3, "LSB")
|
||||
QDEF(MP_QSTR_LockType, 8246, 8, "LockType")
|
||||
QDEF(MP_QSTR_MONO_HLSB, 38988, 9, "MONO_HLSB")
|
||||
QDEF(MP_QSTR_MONO_HMSB, 33741, 9, "MONO_HMSB")
|
||||
QDEF(MP_QSTR_MONO_VLSB, 64530, 9, "MONO_VLSB")
|
||||
QDEF(MP_QSTR_MSB, 51801, 3, "MSB")
|
||||
QDEF(MP_QSTR_MVLSB, 5123, 5, "MVLSB")
|
||||
QDEF(MP_QSTR_NATIVE, 36356, 6, "NATIVE")
|
||||
QDEF(MP_QSTR_NotImplemented, 50750, 14, "NotImplemented")
|
||||
QDEF(MP_QSTR_ONE_SHOT, 65374, 8, "ONE_SHOT")
|
||||
QDEF(MP_QSTR_OPEN_DRAIN, 18526, 10, "OPEN_DRAIN")
|
||||
QDEF(MP_QSTR_OUT, 58123, 3, "OUT")
|
||||
QDEF(MP_QSTR_OrderedDict, 32496, 11, "OrderedDict")
|
||||
QDEF(MP_QSTR_PERIODIC, 13578, 8, "PERIODIC")
|
||||
QDEF(MP_QSTR_POLLERR, 49375, 7, "POLLERR")
|
||||
QDEF(MP_QSTR_POLLHUP, 35447, 7, "POLLHUP")
|
||||
QDEF(MP_QSTR_POLLIN, 24957, 6, "POLLIN")
|
||||
QDEF(MP_QSTR_POLLOUT, 34164, 7, "POLLOUT")
|
||||
QDEF(MP_QSTR_PTR, 3251, 3, "PTR")
|
||||
QDEF(MP_QSTR_Pin, 5138, 3, "Pin")
|
||||
QDEF(MP_QSTR_PinBase, 17223, 7, "PinBase")
|
||||
QDEF(MP_QSTR_RGB565, 52324, 6, "RGB565")
|
||||
QDEF(MP_QSTR_SHORT, 7159, 5, "SHORT")
|
||||
QDEF(MP_QSTR_SOCK_DGRAM, 5299, 10, "SOCK_DGRAM")
|
||||
QDEF(MP_QSTR_SOCK_RAW, 38602, 8, "SOCK_RAW")
|
||||
QDEF(MP_QSTR_SOCK_STREAM, 48690, 11, "SOCK_STREAM")
|
||||
QDEF(MP_QSTR_SOL_SOCKET, 57103, 10, "SOL_SOCKET")
|
||||
QDEF(MP_QSTR_SO_KEEPALIVE, 41770, 12, "SO_KEEPALIVE")
|
||||
QDEF(MP_QSTR_SO_RCVTIMEO, 10459, 11, "SO_RCVTIMEO")
|
||||
QDEF(MP_QSTR_SO_REUSEADDR, 21281, 12, "SO_REUSEADDR")
|
||||
QDEF(MP_QSTR_SO_SNDTIMEO, 65317, 11, "SO_SNDTIMEO")
|
||||
QDEF(MP_QSTR_SPI, 4591, 3, "SPI")
|
||||
QDEF(MP_QSTR_STA_IF, 7091, 6, "STA_IF")
|
||||
QDEF(MP_QSTR_Signal, 58523, 6, "Signal")
|
||||
QDEF(MP_QSTR_SoftI2C, 61971, 7, "SoftI2C")
|
||||
QDEF(MP_QSTR_SoftSPI, 22561, 7, "SoftSPI")
|
||||
QDEF(MP_QSTR_StopAsyncIteration, 61676, 18, "StopAsyncIteration")
|
||||
QDEF(MP_QSTR_StringIO, 30326, 8, "StringIO")
|
||||
QDEF(MP_QSTR_Task, 16904, 4, "Task")
|
||||
QDEF(MP_QSTR_TaskQueue, 23705, 9, "TaskQueue")
|
||||
QDEF(MP_QSTR_TextIOWrapper, 36269, 13, "TextIOWrapper")
|
||||
QDEF(MP_QSTR_Timer, 8098, 5, "Timer")
|
||||
QDEF(MP_QSTR_UART, 6583, 4, "UART")
|
||||
QDEF(MP_QSTR_UINT, 15651, 4, "UINT")
|
||||
QDEF(MP_QSTR_UINT16, 6084, 6, "UINT16")
|
||||
QDEF(MP_QSTR_UINT32, 6018, 6, "UINT32")
|
||||
QDEF(MP_QSTR_UINT64, 6241, 6, "UINT64")
|
||||
QDEF(MP_QSTR_UINT8, 57787, 5, "UINT8")
|
||||
QDEF(MP_QSTR_ULONG, 36218, 5, "ULONG")
|
||||
QDEF(MP_QSTR_ULONGLONG, 50800, 9, "ULONGLONG")
|
||||
QDEF(MP_QSTR_USHORT, 62626, 6, "USHORT")
|
||||
QDEF(MP_QSTR_UnicodeError, 53538, 12, "UnicodeError")
|
||||
QDEF(MP_QSTR_VOID, 62001, 4, "VOID")
|
||||
QDEF(MP_QSTR_VfsTos, 55502, 6, "VfsTos")
|
||||
QDEF(MP_QSTR__machine, 19391, 8, "_machine")
|
||||
QDEF(MP_QSTR__task_queue, 50649, 11, "_task_queue")
|
||||
QDEF(MP_QSTR__thread, 724, 7, "_thread")
|
||||
QDEF(MP_QSTR__uasyncio, 24527, 9, "_uasyncio")
|
||||
QDEF(MP_QSTR_a2b_base64, 2876, 10, "a2b_base64")
|
||||
QDEF(MP_QSTR_abs_tol, 28029, 7, "abs_tol")
|
||||
QDEF(MP_QSTR_accept, 35205, 6, "accept")
|
||||
QDEF(MP_QSTR_acos, 40987, 4, "acos")
|
||||
QDEF(MP_QSTR_acquire, 54045, 7, "acquire")
|
||||
QDEF(MP_QSTR_add, 12868, 3, "add")
|
||||
QDEF(MP_QSTR_addr, 31414, 4, "addr")
|
||||
QDEF(MP_QSTR_addressof, 63834, 9, "addressof")
|
||||
QDEF(MP_QSTR_addrsize, 37267, 8, "addrsize")
|
||||
QDEF(MP_QSTR_alloc_emergency_exception_buf, 10872, 29, "alloc_emergency_exception_buf")
|
||||
QDEF(MP_QSTR_allocate_lock, 60908, 13, "allocate_lock")
|
||||
QDEF(MP_QSTR_arg, 13457, 3, "arg")
|
||||
QDEF(MP_QSTR_argv, 50887, 4, "argv")
|
||||
QDEF(MP_QSTR_array, 29308, 5, "array")
|
||||
QDEF(MP_QSTR_asin, 58704, 4, "asin")
|
||||
QDEF(MP_QSTR_atan, 48671, 4, "atan")
|
||||
QDEF(MP_QSTR_atan2, 33229, 5, "atan2")
|
||||
QDEF(MP_QSTR_b2a_base64, 36668, 10, "b2a_base64")
|
||||
QDEF(MP_QSTR_baudrate, 55541, 8, "baudrate")
|
||||
QDEF(MP_QSTR_bin, 18656, 3, "bin")
|
||||
QDEF(MP_QSTR_bind, 25732, 4, "bind")
|
||||
QDEF(MP_QSTR_bits, 26697, 4, "bits")
|
||||
QDEF(MP_QSTR_blit, 20726, 4, "blit")
|
||||
QDEF(MP_QSTR_bound_method, 41623, 12, "bound_method")
|
||||
QDEF(MP_QSTR_buffer, 41189, 6, "buffer")
|
||||
QDEF(MP_QSTR_buffering, 56101, 9, "buffering")
|
||||
QDEF(MP_QSTR_bytearray_at, 23708, 12, "bytearray_at")
|
||||
QDEF(MP_QSTR_byteorder, 39265, 9, "byteorder")
|
||||
QDEF(MP_QSTR_bytes_at, 23990, 8, "bytes_at")
|
||||
QDEF(MP_QSTR_calcsize, 14413, 8, "calcsize")
|
||||
QDEF(MP_QSTR_callback, 61516, 8, "callback")
|
||||
QDEF(MP_QSTR_cancel, 34563, 6, "cancel")
|
||||
QDEF(MP_QSTR_ceil, 45062, 4, "ceil")
|
||||
QDEF(MP_QSTR_center, 48974, 6, "center")
|
||||
QDEF(MP_QSTR_chdir, 45745, 5, "chdir")
|
||||
QDEF(MP_QSTR_choice, 13102, 6, "choice")
|
||||
QDEF(MP_QSTR_closure, 51828, 7, "closure")
|
||||
QDEF(MP_QSTR_cmath, 62646, 5, "cmath")
|
||||
QDEF(MP_QSTR_code, 55912, 4, "code")
|
||||
QDEF(MP_QSTR_collect, 26011, 7, "collect")
|
||||
QDEF(MP_QSTR_compile, 51700, 7, "compile")
|
||||
QDEF(MP_QSTR_complex, 40389, 7, "complex")
|
||||
QDEF(MP_QSTR_connect, 15835, 7, "connect")
|
||||
QDEF(MP_QSTR_copysign, 5171, 8, "copysign")
|
||||
QDEF(MP_QSTR_coro, 56244, 4, "coro")
|
||||
QDEF(MP_QSTR_cos, 19578, 3, "cos")
|
||||
QDEF(MP_QSTR_crc32, 59510, 5, "crc32")
|
||||
QDEF(MP_QSTR_cur_task, 11763, 8, "cur_task")
|
||||
QDEF(MP_QSTR_data, 56341, 4, "data")
|
||||
QDEF(MP_QSTR_decode, 22953, 6, "decode")
|
||||
QDEF(MP_QSTR_decompress, 64354, 10, "decompress")
|
||||
QDEF(MP_QSTR_default, 32206, 7, "default")
|
||||
QDEF(MP_QSTR_degrees, 16642, 7, "degrees")
|
||||
QDEF(MP_QSTR_deinit, 36254, 6, "deinit")
|
||||
QDEF(MP_QSTR_delattr, 51419, 7, "delattr")
|
||||
QDEF(MP_QSTR_deleter, 56174, 7, "deleter")
|
||||
QDEF(MP_QSTR_deque, 39173, 5, "deque")
|
||||
QDEF(MP_QSTR_dict_view, 43309, 9, "dict_view")
|
||||
QDEF(MP_QSTR_difference, 9330, 10, "difference")
|
||||
QDEF(MP_QSTR_difference_update, 64156, 17, "difference_update")
|
||||
QDEF(MP_QSTR_digest, 50381, 6, "digest")
|
||||
QDEF(MP_QSTR_disable, 30353, 7, "disable")
|
||||
QDEF(MP_QSTR_discard, 28943, 7, "discard")
|
||||
QDEF(MP_QSTR_doc, 7981, 3, "doc")
|
||||
QDEF(MP_QSTR_done, 837, 4, "done")
|
||||
QDEF(MP_QSTR_dump, 12265, 4, "dump")
|
||||
QDEF(MP_QSTR_dumps, 11642, 5, "dumps")
|
||||
QDEF(MP_QSTR_e, 46528, 1, "e")
|
||||
QDEF(MP_QSTR_enable, 56836, 6, "enable")
|
||||
QDEF(MP_QSTR_encode, 51779, 6, "encode")
|
||||
QDEF(MP_QSTR_encoding, 39942, 8, "encoding")
|
||||
QDEF(MP_QSTR_enumerate, 47729, 9, "enumerate")
|
||||
QDEF(MP_QSTR_errno, 4545, 5, "errno")
|
||||
QDEF(MP_QSTR_errorcode, 56592, 9, "errorcode")
|
||||
QDEF(MP_QSTR_execfile, 10328, 8, "execfile")
|
||||
QDEF(MP_QSTR_exit, 48773, 4, "exit")
|
||||
QDEF(MP_QSTR_exp, 9416, 3, "exp")
|
||||
QDEF(MP_QSTR_fabs, 4755, 4, "fabs")
|
||||
QDEF(MP_QSTR_factorial, 13004, 9, "factorial")
|
||||
QDEF(MP_QSTR_file, 13507, 4, "file")
|
||||
QDEF(MP_QSTR_fileno, 30338, 6, "fileno")
|
||||
QDEF(MP_QSTR_fill, 13514, 4, "fill")
|
||||
QDEF(MP_QSTR_fill_rect, 60725, 9, "fill_rect")
|
||||
QDEF(MP_QSTR_filter, 48677, 6, "filter")
|
||||
QDEF(MP_QSTR_firstbit, 14624, 8, "firstbit")
|
||||
QDEF(MP_QSTR_float, 17461, 5, "float")
|
||||
QDEF(MP_QSTR_floor, 18045, 5, "floor")
|
||||
QDEF(MP_QSTR_flush, 49505, 5, "flush")
|
||||
QDEF(MP_QSTR_fmod, 17637, 4, "fmod")
|
||||
QDEF(MP_QSTR_framebuf, 33385, 8, "framebuf")
|
||||
QDEF(MP_QSTR_freq, 15077, 4, "freq")
|
||||
QDEF(MP_QSTR_frexp, 38940, 5, "frexp")
|
||||
QDEF(MP_QSTR_fromkeys, 48439, 8, "fromkeys")
|
||||
QDEF(MP_QSTR_frozenset, 40173, 9, "frozenset")
|
||||
QDEF(MP_QSTR_function, 551, 8, "function")
|
||||
QDEF(MP_QSTR_gc, 28257, 2, "gc")
|
||||
QDEF(MP_QSTR_generator, 50070, 9, "generator")
|
||||
QDEF(MP_QSTR_get_ident, 45566, 9, "get_ident")
|
||||
QDEF(MP_QSTR_getaddrinfo, 6254, 11, "getaddrinfo")
|
||||
QDEF(MP_QSTR_getcwd, 53251, 6, "getcwd")
|
||||
QDEF(MP_QSTR_getrandbits, 32102, 11, "getrandbits")
|
||||
QDEF(MP_QSTR_getter, 45712, 6, "getter")
|
||||
QDEF(MP_QSTR_getvalue, 44152, 8, "getvalue")
|
||||
QDEF(MP_QSTR_group, 45242, 5, "group")
|
||||
QDEF(MP_QSTR_handler, 24029, 7, "handler")
|
||||
QDEF(MP_QSTR_heap_lock, 36013, 9, "heap_lock")
|
||||
QDEF(MP_QSTR_heap_unlock, 11606, 11, "heap_unlock")
|
||||
QDEF(MP_QSTR_heapify, 11695, 7, "heapify")
|
||||
QDEF(MP_QSTR_heappop, 10198, 7, "heappop")
|
||||
QDEF(MP_QSTR_heappush, 27527, 8, "heappush")
|
||||
QDEF(MP_QSTR_help, 23700, 4, "help")
|
||||
QDEF(MP_QSTR_hex, 20592, 3, "hex")
|
||||
QDEF(MP_QSTR_hexlify, 32554, 7, "hexlify")
|
||||
QDEF(MP_QSTR_hline, 15491, 5, "hline")
|
||||
QDEF(MP_QSTR_ilistdir, 27249, 8, "ilistdir")
|
||||
QDEF(MP_QSTR_imag, 46919, 4, "imag")
|
||||
QDEF(MP_QSTR_implementation, 11543, 14, "implementation")
|
||||
QDEF(MP_QSTR_indices, 18522, 7, "indices")
|
||||
QDEF(MP_QSTR_inf, 21252, 3, "inf")
|
||||
QDEF(MP_QSTR_init, 46111, 4, "init")
|
||||
QDEF(MP_QSTR_input, 23155, 5, "input")
|
||||
QDEF(MP_QSTR_intersection, 10792, 12, "intersection")
|
||||
QDEF(MP_QSTR_intersection_update, 56582, 19, "intersection_update")
|
||||
QDEF(MP_QSTR_invert, 183, 6, "invert")
|
||||
QDEF(MP_QSTR_ioctl, 49784, 5, "ioctl")
|
||||
QDEF(MP_QSTR_ipoll, 23891, 5, "ipoll")
|
||||
QDEF(MP_QSTR_irq, 22159, 3, "irq")
|
||||
QDEF(MP_QSTR_isclose, 20041, 7, "isclose")
|
||||
QDEF(MP_QSTR_isdisjoint, 26871, 10, "isdisjoint")
|
||||
QDEF(MP_QSTR_isenabled, 58778, 9, "isenabled")
|
||||
QDEF(MP_QSTR_isfinite, 43942, 8, "isfinite")
|
||||
QDEF(MP_QSTR_isinf, 4414, 5, "isinf")
|
||||
QDEF(MP_QSTR_isnan, 926, 5, "isnan")
|
||||
QDEF(MP_QSTR_issubset, 49593, 8, "issubset")
|
||||
QDEF(MP_QSTR_issuperset, 60668, 10, "issuperset")
|
||||
QDEF(MP_QSTR_iterable, 37413, 8, "iterable")
|
||||
QDEF(MP_QSTR_iterator, 48711, 8, "iterator")
|
||||
QDEF(MP_QSTR_kbd_intr, 5110, 8, "kbd_intr")
|
||||
QDEF(MP_QSTR_keepends, 35682, 8, "keepends")
|
||||
QDEF(MP_QSTR_ldexp, 28480, 5, "ldexp")
|
||||
QDEF(MP_QSTR_line, 7371, 4, "line")
|
||||
QDEF(MP_QSTR_listdir, 58264, 7, "listdir")
|
||||
QDEF(MP_QSTR_listen, 3788, 6, "listen")
|
||||
QDEF(MP_QSTR_load, 9315, 4, "load")
|
||||
QDEF(MP_QSTR_loads, 45232, 5, "loads")
|
||||
QDEF(MP_QSTR_lock, 9134, 4, "lock")
|
||||
QDEF(MP_QSTR_locked, 47631, 6, "locked")
|
||||
QDEF(MP_QSTR_log, 16161, 3, "log")
|
||||
QDEF(MP_QSTR_machine, 43872, 7, "machine")
|
||||
QDEF(MP_QSTR_makefile, 54721, 8, "makefile")
|
||||
QDEF(MP_QSTR_match, 8854, 5, "match")
|
||||
QDEF(MP_QSTR_math, 47925, 4, "math")
|
||||
QDEF(MP_QSTR_max, 17329, 3, "max")
|
||||
QDEF(MP_QSTR_maxsize, 28884, 7, "maxsize")
|
||||
QDEF(MP_QSTR_mem, 17440, 3, "mem")
|
||||
QDEF(MP_QSTR_mem16, 51719, 5, "mem16")
|
||||
QDEF(MP_QSTR_mem32, 51777, 5, "mem32")
|
||||
QDEF(MP_QSTR_mem8, 51224, 4, "mem8")
|
||||
QDEF(MP_QSTR_mem_alloc, 11090, 9, "mem_alloc")
|
||||
QDEF(MP_QSTR_mem_free, 25291, 8, "mem_free")
|
||||
QDEF(MP_QSTR_mem_info, 61905, 8, "mem_info")
|
||||
QDEF(MP_QSTR_memaddr, 59539, 7, "memaddr")
|
||||
QDEF(MP_QSTR_memoryview, 17513, 10, "memoryview")
|
||||
QDEF(MP_QSTR_min, 17071, 3, "min")
|
||||
QDEF(MP_QSTR_miso, 39069, 4, "miso")
|
||||
QDEF(MP_QSTR_mkdir, 46492, 5, "mkdir")
|
||||
QDEF(MP_QSTR_mkfs, 45174, 4, "mkfs")
|
||||
QDEF(MP_QSTR_mode, 49190, 4, "mode")
|
||||
QDEF(MP_QSTR_modf, 49189, 4, "modf")
|
||||
QDEF(MP_QSTR_modify, 26357, 6, "modify")
|
||||
QDEF(MP_QSTR_module, 39359, 6, "module")
|
||||
QDEF(MP_QSTR_modules, 53740, 7, "modules")
|
||||
QDEF(MP_QSTR_mosi, 49693, 4, "mosi")
|
||||
QDEF(MP_QSTR_mount, 3496, 5, "mount")
|
||||
QDEF(MP_QSTR_name, 30114, 4, "name")
|
||||
QDEF(MP_QSTR_namedtuple, 5662, 10, "namedtuple")
|
||||
QDEF(MP_QSTR_nan, 22756, 3, "nan")
|
||||
QDEF(MP_QSTR_network, 10331, 7, "network")
|
||||
QDEF(MP_QSTR_newline, 35127, 7, "newline")
|
||||
QDEF(MP_QSTR_nodename, 43874, 8, "nodename")
|
||||
QDEF(MP_QSTR_oct, 23805, 3, "oct")
|
||||
QDEF(MP_QSTR_off, 23690, 3, "off")
|
||||
QDEF(MP_QSTR_on, 28516, 2, "on")
|
||||
QDEF(MP_QSTR_opt_level, 26503, 9, "opt_level")
|
||||
QDEF(MP_QSTR_pack, 53692, 4, "pack")
|
||||
QDEF(MP_QSTR_pack_into, 43295, 9, "pack_into")
|
||||
QDEF(MP_QSTR_partition, 58759, 9, "partition")
|
||||
QDEF(MP_QSTR_path, 52872, 4, "path")
|
||||
QDEF(MP_QSTR_peek, 49534, 4, "peek")
|
||||
QDEF(MP_QSTR_pend_throw, 29939, 10, "pend_throw")
|
||||
QDEF(MP_QSTR_period, 41120, 6, "period")
|
||||
QDEF(MP_QSTR_ph_key, 6901, 6, "ph_key")
|
||||
QDEF(MP_QSTR_phase, 54634, 5, "phase")
|
||||
QDEF(MP_QSTR_pi, 28700, 2, "pi")
|
||||
QDEF(MP_QSTR_pixel, 61517, 5, "pixel")
|
||||
QDEF(MP_QSTR_platform, 6458, 8, "platform")
|
||||
QDEF(MP_QSTR_polar, 3077, 5, "polar")
|
||||
QDEF(MP_QSTR_polarity, 60737, 8, "polarity")
|
||||
QDEF(MP_QSTR_poll, 55706, 4, "poll")
|
||||
QDEF(MP_QSTR_popleft, 39537, 7, "popleft")
|
||||
QDEF(MP_QSTR_print_exception, 8732, 15, "print_exception")
|
||||
QDEF(MP_QSTR_property, 10690, 8, "property")
|
||||
QDEF(MP_QSTR_ps1, 28919, 3, "ps1")
|
||||
QDEF(MP_QSTR_ps2, 28916, 3, "ps2")
|
||||
QDEF(MP_QSTR_push, 32443, 4, "push")
|
||||
QDEF(MP_QSTR_pwd, 28710, 3, "pwd")
|
||||
QDEF(MP_QSTR_qstr_info, 33200, 9, "qstr_info")
|
||||
QDEF(MP_QSTR_r, 46551, 1, "r")
|
||||
QDEF(MP_QSTR_radians, 16263, 7, "radians")
|
||||
QDEF(MP_QSTR_randint, 56495, 7, "randint")
|
||||
QDEF(MP_QSTR_random, 11454, 6, "random")
|
||||
QDEF(MP_QSTR_randrange, 16035, 9, "randrange")
|
||||
QDEF(MP_QSTR_rb, 28885, 2, "rb")
|
||||
QDEF(MP_QSTR_readblocks, 7213, 10, "readblocks")
|
||||
QDEF(MP_QSTR_readfrom, 45377, 8, "readfrom")
|
||||
QDEF(MP_QSTR_readfrom_into, 16258, 13, "readfrom_into")
|
||||
QDEF(MP_QSTR_readfrom_mem, 25915, 12, "readfrom_mem")
|
||||
QDEF(MP_QSTR_readfrom_mem_into, 36408, 17, "readfrom_mem_into")
|
||||
QDEF(MP_QSTR_readlines, 22890, 9, "readlines")
|
||||
QDEF(MP_QSTR_readonly, 35075, 8, "readonly")
|
||||
QDEF(MP_QSTR_real, 63935, 4, "real")
|
||||
QDEF(MP_QSTR_rect, 63973, 4, "rect")
|
||||
QDEF(MP_QSTR_recv, 63975, 4, "recv")
|
||||
QDEF(MP_QSTR_recvfrom, 37009, 8, "recvfrom")
|
||||
QDEF(MP_QSTR_register, 41388, 8, "register")
|
||||
QDEF(MP_QSTR_rel_tol, 18006, 7, "rel_tol")
|
||||
QDEF(MP_QSTR_release, 36844, 7, "release")
|
||||
QDEF(MP_QSTR_rename, 6197, 6, "rename")
|
||||
QDEF(MP_QSTR_reversed, 28321, 8, "reversed")
|
||||
QDEF(MP_QSTR_rmdir, 42821, 5, "rmdir")
|
||||
QDEF(MP_QSTR_route, 10300, 5, "route")
|
||||
QDEF(MP_QSTR_rpartition, 53269, 10, "rpartition")
|
||||
QDEF(MP_QSTR_rxbuf, 26494, 5, "rxbuf")
|
||||
QDEF(MP_QSTR_scan, 36378, 4, "scan")
|
||||
QDEF(MP_QSTR_schedule, 44256, 8, "schedule")
|
||||
QDEF(MP_QSTR_sck, 36862, 3, "sck")
|
||||
QDEF(MP_QSTR_scl, 36857, 3, "scl")
|
||||
QDEF(MP_QSTR_scroll, 23080, 6, "scroll")
|
||||
QDEF(MP_QSTR_sda, 36691, 3, "sda")
|
||||
QDEF(MP_QSTR_search, 49579, 6, "search")
|
||||
QDEF(MP_QSTR_seed, 30098, 4, "seed")
|
||||
QDEF(MP_QSTR_seek, 30109, 4, "seek")
|
||||
QDEF(MP_QSTR_select, 16781, 6, "select")
|
||||
QDEF(MP_QSTR_sendall, 40760, 7, "sendall")
|
||||
QDEF(MP_QSTR_sendto, 802, 6, "sendto")
|
||||
QDEF(MP_QSTR_separators, 3307, 10, "separators")
|
||||
QDEF(MP_QSTR_setblocking, 6254, 11, "setblocking")
|
||||
QDEF(MP_QSTR_setsockopt, 59448, 10, "setsockopt")
|
||||
QDEF(MP_QSTR_setter, 22788, 6, "setter")
|
||||
QDEF(MP_QSTR_settimeout, 35548, 10, "settimeout")
|
||||
QDEF(MP_QSTR_sha256, 302, 6, "sha256")
|
||||
QDEF(MP_QSTR_sin, 37041, 3, "sin")
|
||||
QDEF(MP_QSTR_single, 8255, 6, "single")
|
||||
QDEF(MP_QSTR_sizeof, 29513, 6, "sizeof")
|
||||
QDEF(MP_QSTR_sleep, 10218, 5, "sleep")
|
||||
QDEF(MP_QSTR_sleep_ms, 25355, 8, "sleep_ms")
|
||||
QDEF(MP_QSTR_slice, 62645, 5, "slice")
|
||||
QDEF(MP_QSTR_socket, 52320, 6, "socket")
|
||||
QDEF(MP_QSTR_soft_reset, 26081, 10, "soft_reset")
|
||||
QDEF(MP_QSTR_splitlines, 54122, 10, "splitlines")
|
||||
QDEF(MP_QSTR_sqrt, 17441, 4, "sqrt")
|
||||
QDEF(MP_QSTR_ssid, 19208, 4, "ssid")
|
||||
QDEF(MP_QSTR_stack_size, 15153, 10, "stack_size")
|
||||
QDEF(MP_QSTR_stack_use, 63383, 9, "stack_use")
|
||||
QDEF(MP_QSTR_start_new_thread, 9687, 16, "start_new_thread")
|
||||
QDEF(MP_QSTR_stat, 13783, 4, "stat")
|
||||
QDEF(MP_QSTR_state, 61650, 5, "state")
|
||||
QDEF(MP_QSTR_statvfs, 6420, 7, "statvfs")
|
||||
QDEF(MP_QSTR_stderr, 22691, 6, "stderr")
|
||||
QDEF(MP_QSTR_stdin, 1057, 5, "stdin")
|
||||
QDEF(MP_QSTR_stdout, 33544, 6, "stdout")
|
||||
QDEF(MP_QSTR_struct, 36882, 6, "struct")
|
||||
QDEF(MP_QSTR_sub, 36129, 3, "sub")
|
||||
QDEF(MP_QSTR_symmetric_difference, 26574, 20, "symmetric_difference")
|
||||
QDEF(MP_QSTR_symmetric_difference_update, 63584, 27, "symmetric_difference_update")
|
||||
QDEF(MP_QSTR_sync, 25250, 4, "sync")
|
||||
QDEF(MP_QSTR_sys, 36540, 3, "sys")
|
||||
QDEF(MP_QSTR_sysname, 13979, 7, "sysname")
|
||||
QDEF(MP_QSTR_tan, 25086, 3, "tan")
|
||||
QDEF(MP_QSTR_tau, 25061, 3, "tau")
|
||||
QDEF(MP_QSTR_tell, 45332, 4, "tell")
|
||||
QDEF(MP_QSTR_text, 44952, 4, "text")
|
||||
QDEF(MP_QSTR_threshold, 12274, 9, "threshold")
|
||||
QDEF(MP_QSTR_tick_hz, 56189, 7, "tick_hz")
|
||||
QDEF(MP_QSTR_ticks_add, 44701, 9, "ticks_add")
|
||||
QDEF(MP_QSTR_ticks_cpu, 42266, 9, "ticks_cpu")
|
||||
QDEF(MP_QSTR_ticks_diff, 57521, 10, "ticks_diff")
|
||||
QDEF(MP_QSTR_ticks_ms, 12866, 8, "ticks_ms")
|
||||
QDEF(MP_QSTR_timeout, 21566, 7, "timeout")
|
||||
QDEF(MP_QSTR_timeout_char, 19065, 12, "timeout_char")
|
||||
QDEF(MP_QSTR_trigger, 35997, 7, "trigger")
|
||||
QDEF(MP_QSTR_trunc, 39259, 5, "trunc")
|
||||
QDEF(MP_QSTR_uarray, 34441, 6, "uarray")
|
||||
QDEF(MP_QSTR_ubinascii, 35012, 9, "ubinascii")
|
||||
QDEF(MP_QSTR_ucollections, 39445, 12, "ucollections")
|
||||
QDEF(MP_QSTR_uctypes, 29176, 7, "uctypes")
|
||||
QDEF(MP_QSTR_uerrno, 59828, 6, "uerrno")
|
||||
QDEF(MP_QSTR_uhashlib, 40293, 8, "uhashlib")
|
||||
QDEF(MP_QSTR_uheapq, 17181, 6, "uheapq")
|
||||
QDEF(MP_QSTR_uio, 26294, 3, "uio")
|
||||
QDEF(MP_QSTR_ujson, 12520, 5, "ujson")
|
||||
QDEF(MP_QSTR_umachine, 32661, 8, "umachine")
|
||||
QDEF(MP_QSTR_umount, 40669, 6, "umount")
|
||||
QDEF(MP_QSTR_uname, 40119, 5, "uname")
|
||||
QDEF(MP_QSTR_unhexlify, 47537, 9, "unhexlify")
|
||||
QDEF(MP_QSTR_uniform, 62721, 7, "uniform")
|
||||
QDEF(MP_QSTR_union, 31990, 5, "union")
|
||||
QDEF(MP_QSTR_unlink, 36862, 6, "unlink")
|
||||
QDEF(MP_QSTR_unpack, 15367, 6, "unpack")
|
||||
QDEF(MP_QSTR_unpack_from, 27918, 11, "unpack_from")
|
||||
QDEF(MP_QSTR_unregister, 54295, 10, "unregister")
|
||||
QDEF(MP_QSTR_uos, 26604, 3, "uos")
|
||||
QDEF(MP_QSTR_urandom, 44715, 7, "urandom")
|
||||
QDEF(MP_QSTR_ure, 25479, 3, "ure")
|
||||
QDEF(MP_QSTR_uselect, 36440, 7, "uselect")
|
||||
QDEF(MP_QSTR_usocket, 117, 7, "usocket")
|
||||
QDEF(MP_QSTR_ustruct, 2119, 7, "ustruct")
|
||||
QDEF(MP_QSTR_usys, 62409, 4, "usys")
|
||||
QDEF(MP_QSTR_utime, 40421, 5, "utime")
|
||||
QDEF(MP_QSTR_uzlib, 39789, 5, "uzlib")
|
||||
QDEF(MP_QSTR_version, 54207, 7, "version")
|
||||
QDEF(MP_QSTR_version_info, 2670, 12, "version_info")
|
||||
QDEF(MP_QSTR_vline, 63005, 5, "vline")
|
||||
QDEF(MP_QSTR_write_readinto, 33929, 14, "write_readinto")
|
||||
QDEF(MP_QSTR_writeblocks, 57090, 11, "writeblocks")
|
||||
QDEF(MP_QSTR_writeto, 14595, 7, "writeto")
|
||||
QDEF(MP_QSTR_writeto_mem, 60793, 11, "writeto_mem")
|
||||
QDEF(MP_QSTR_writevto, 30069, 8, "writevto")
|
||||
|
|
@ -1,404 +0,0 @@
|
|||
;********************** COPYRIGHT(c) 2017 STMicroelectronics ******************
|
||||
;* File Name : startup_stm32l431xx.s
|
||||
;* Author : MCD Application Team
|
||||
;* Description : STM32L431xx Ultra Low Power devices vector table for MDK-ARM toolchain.
|
||||
;* This module performs:
|
||||
;* - Set the initial SP
|
||||
;* - Set the initial PC == Reset_Handler
|
||||
;* - Set the vector table entries with the exceptions ISR address
|
||||
;* - Branches to __main in the C library (which eventually
|
||||
;* calls main()).
|
||||
;* After Reset the Cortex-M4 processor is in Thread mode,
|
||||
;* priority is Privileged, and the Stack is set to Main.
|
||||
;* <<< Use Configuration Wizard in Context Menu >>>
|
||||
;*******************************************************************************
|
||||
;*
|
||||
;* Redistribution and use in source and binary forms, with or without modification,
|
||||
;* are permitted provided that the following conditions are met:
|
||||
;* 1. Redistributions of source code must retain the above copyright notice,
|
||||
;* this list of conditions and the following disclaimer.
|
||||
;* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
;* this list of conditions and the following disclaimer in the documentation
|
||||
;* and/or other materials provided with the distribution.
|
||||
;* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||
;* may be used to endorse or promote products derived from this software
|
||||
;* without specific prior written permission.
|
||||
;*
|
||||
;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
;*
|
||||
;*******************************************************************************
|
||||
;
|
||||
; Amount of memory (in bytes) allocated for Stack
|
||||
; Tailor this value to your application needs
|
||||
; <h> Stack Configuration
|
||||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||
; </h>
|
||||
|
||||
Stack_Size EQU 0x100
|
||||
|
||||
AREA STACK, NOINIT, READWRITE, ALIGN=3
|
||||
Stack_Mem SPACE Stack_Size
|
||||
__initial_sp
|
||||
|
||||
|
||||
; <h> Heap Configuration
|
||||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||
; </h>
|
||||
|
||||
Heap_Size EQU 0x100
|
||||
|
||||
AREA HEAP, NOINIT, READWRITE, ALIGN=3
|
||||
__heap_base
|
||||
Heap_Mem SPACE Heap_Size
|
||||
__heap_limit
|
||||
|
||||
PRESERVE8
|
||||
THUMB
|
||||
|
||||
|
||||
; Vector Table Mapped to Address 0 at Reset
|
||||
AREA RESET, DATA, READONLY
|
||||
EXPORT __Vectors
|
||||
EXPORT __Vectors_End
|
||||
EXPORT __Vectors_Size
|
||||
|
||||
__Vectors DCD __initial_sp ; Top of Stack
|
||||
DCD Reset_Handler ; Reset Handler
|
||||
DCD NMI_Handler ; NMI Handler
|
||||
DCD HardFault_Handler ; Hard Fault Handler
|
||||
DCD MemManage_Handler ; MPU Fault Handler
|
||||
DCD BusFault_Handler ; Bus Fault Handler
|
||||
DCD UsageFault_Handler ; Usage Fault Handler
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD SVC_Handler ; SVCall Handler
|
||||
DCD DebugMon_Handler ; Debug Monitor Handler
|
||||
DCD 0 ; Reserved
|
||||
DCD PendSV_Handler ; PendSV Handler
|
||||
DCD SysTick_Handler ; SysTick Handler
|
||||
|
||||
; External Interrupts
|
||||
DCD WWDG_IRQHandler ; Window WatchDog
|
||||
DCD PVD_PVM_IRQHandler ; PVD/PVM1/PVM2/PVM3/PVM4 through EXTI Line detection
|
||||
DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line
|
||||
DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line
|
||||
DCD FLASH_IRQHandler ; FLASH
|
||||
DCD RCC_IRQHandler ; RCC
|
||||
DCD EXTI0_IRQHandler ; EXTI Line0
|
||||
DCD EXTI1_IRQHandler ; EXTI Line1
|
||||
DCD EXTI2_IRQHandler ; EXTI Line2
|
||||
DCD EXTI3_IRQHandler ; EXTI Line3
|
||||
DCD EXTI4_IRQHandler ; EXTI Line4
|
||||
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1
|
||||
DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2
|
||||
DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3
|
||||
DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4
|
||||
DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5
|
||||
DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6
|
||||
DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7
|
||||
DCD ADC1_IRQHandler ; ADC1
|
||||
DCD CAN1_TX_IRQHandler ; CAN1 TX
|
||||
DCD CAN1_RX0_IRQHandler ; CAN1 RX0
|
||||
DCD CAN1_RX1_IRQHandler ; CAN1 RX1
|
||||
DCD CAN1_SCE_IRQHandler ; CAN1 SCE
|
||||
DCD EXTI9_5_IRQHandler ; External Line[9:5]s
|
||||
DCD TIM1_BRK_TIM15_IRQHandler ; TIM1 Break and TIM15
|
||||
DCD TIM1_UP_TIM16_IRQHandler ; TIM1 Update and TIM16
|
||||
DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation
|
||||
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
|
||||
DCD TIM2_IRQHandler ; TIM2
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD I2C1_EV_IRQHandler ; I2C1 Event
|
||||
DCD I2C1_ER_IRQHandler ; I2C1 Error
|
||||
DCD I2C2_EV_IRQHandler ; I2C2 Event
|
||||
DCD I2C2_ER_IRQHandler ; I2C2 Error
|
||||
DCD SPI1_IRQHandler ; SPI1
|
||||
DCD SPI2_IRQHandler ; SPI2
|
||||
DCD USART1_IRQHandler ; USART1
|
||||
DCD USART2_IRQHandler ; USART2
|
||||
DCD USART3_IRQHandler ; USART3
|
||||
DCD EXTI15_10_IRQHandler ; External Line[15:10]
|
||||
DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD SDMMC1_IRQHandler ; SDMMC1
|
||||
DCD 0 ; Reserved
|
||||
DCD SPI3_IRQHandler ; SPI3
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors
|
||||
DCD TIM7_IRQHandler ; TIM7
|
||||
DCD DMA2_Channel1_IRQHandler ; DMA2 Channel 1
|
||||
DCD DMA2_Channel2_IRQHandler ; DMA2 Channel 2
|
||||
DCD DMA2_Channel3_IRQHandler ; DMA2 Channel 3
|
||||
DCD DMA2_Channel4_IRQHandler ; DMA2 Channel 4
|
||||
DCD DMA2_Channel5_IRQHandler ; DMA2 Channel 5
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD COMP_IRQHandler ; COMP Interrupt
|
||||
DCD LPTIM1_IRQHandler ; LP TIM1 interrupt
|
||||
DCD LPTIM2_IRQHandler ; LP TIM2 interrupt
|
||||
DCD 0 ; Reserved
|
||||
DCD DMA2_Channel6_IRQHandler ; DMA2 Channel 6
|
||||
DCD DMA2_Channel7_IRQHandler ; DMA2 Channel 7
|
||||
DCD LPUART1_IRQHandler ; LP UART1 interrupt
|
||||
DCD QUADSPI_IRQHandler ; Quad SPI global interrupt
|
||||
DCD I2C3_EV_IRQHandler ; I2C3 event
|
||||
DCD I2C3_ER_IRQHandler ; I2C3 error
|
||||
DCD SAI1_IRQHandler ; Serial Audio Interface 1 global interrupt
|
||||
DCD 0 ; Reserved
|
||||
DCD SWPMI1_IRQHandler ; Serial Wire Interface 1 global interrupt
|
||||
DCD TSC_IRQHandler ; Touch Sense Controller global interrupt
|
||||
DCD 0 ; Reserved
|
||||
DCD 0 ; Reserved
|
||||
DCD RNG_IRQHandler ; RNG global interrupt
|
||||
DCD FPU_IRQHandler ; FPU
|
||||
DCD CRS_IRQHandler ; CRS interrupt
|
||||
|
||||
__Vectors_End
|
||||
|
||||
__Vectors_Size EQU __Vectors_End - __Vectors
|
||||
|
||||
AREA |.text|, CODE, READONLY
|
||||
|
||||
; Reset handler
|
||||
Reset_Handler PROC
|
||||
EXPORT Reset_Handler [WEAK]
|
||||
IMPORT SystemInit
|
||||
IMPORT __main
|
||||
|
||||
LDR R0, =SystemInit
|
||||
BLX R0
|
||||
LDR R0, =__main
|
||||
BX R0
|
||||
ENDP
|
||||
|
||||
; Dummy Exception Handlers (infinite loops which can be modified)
|
||||
|
||||
NMI_Handler PROC
|
||||
EXPORT NMI_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
HardFault_Handler\
|
||||
PROC
|
||||
EXPORT HardFault_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
MemManage_Handler\
|
||||
PROC
|
||||
EXPORT MemManage_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
BusFault_Handler\
|
||||
PROC
|
||||
EXPORT BusFault_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
UsageFault_Handler\
|
||||
PROC
|
||||
EXPORT UsageFault_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
SVC_Handler PROC
|
||||
EXPORT SVC_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
DebugMon_Handler\
|
||||
PROC
|
||||
EXPORT DebugMon_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
PendSV_Handler PROC
|
||||
EXPORT PendSV_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
SysTick_Handler PROC
|
||||
EXPORT SysTick_Handler [WEAK]
|
||||
B .
|
||||
ENDP
|
||||
|
||||
Default_Handler PROC
|
||||
|
||||
EXPORT WWDG_IRQHandler [WEAK]
|
||||
EXPORT PVD_PVM_IRQHandler [WEAK]
|
||||
EXPORT TAMP_STAMP_IRQHandler [WEAK]
|
||||
EXPORT RTC_WKUP_IRQHandler [WEAK]
|
||||
EXPORT FLASH_IRQHandler [WEAK]
|
||||
EXPORT RCC_IRQHandler [WEAK]
|
||||
EXPORT EXTI0_IRQHandler [WEAK]
|
||||
EXPORT EXTI1_IRQHandler [WEAK]
|
||||
EXPORT EXTI2_IRQHandler [WEAK]
|
||||
EXPORT EXTI3_IRQHandler [WEAK]
|
||||
EXPORT EXTI4_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel1_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel2_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel3_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel4_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel5_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel6_IRQHandler [WEAK]
|
||||
EXPORT DMA1_Channel7_IRQHandler [WEAK]
|
||||
EXPORT ADC1_IRQHandler [WEAK]
|
||||
EXPORT CAN1_TX_IRQHandler [WEAK]
|
||||
EXPORT CAN1_RX0_IRQHandler [WEAK]
|
||||
EXPORT CAN1_RX1_IRQHandler [WEAK]
|
||||
EXPORT CAN1_SCE_IRQHandler [WEAK]
|
||||
EXPORT EXTI9_5_IRQHandler [WEAK]
|
||||
EXPORT TIM1_BRK_TIM15_IRQHandler [WEAK]
|
||||
EXPORT TIM1_UP_TIM16_IRQHandler [WEAK]
|
||||
EXPORT TIM1_TRG_COM_IRQHandler [WEAK]
|
||||
EXPORT TIM1_CC_IRQHandler [WEAK]
|
||||
EXPORT TIM2_IRQHandler [WEAK]
|
||||
EXPORT I2C1_EV_IRQHandler [WEAK]
|
||||
EXPORT I2C1_ER_IRQHandler [WEAK]
|
||||
EXPORT I2C2_EV_IRQHandler [WEAK]
|
||||
EXPORT I2C2_ER_IRQHandler [WEAK]
|
||||
EXPORT SPI1_IRQHandler [WEAK]
|
||||
EXPORT SPI2_IRQHandler [WEAK]
|
||||
EXPORT USART1_IRQHandler [WEAK]
|
||||
EXPORT USART2_IRQHandler [WEAK]
|
||||
EXPORT USART3_IRQHandler [WEAK]
|
||||
EXPORT EXTI15_10_IRQHandler [WEAK]
|
||||
EXPORT RTC_Alarm_IRQHandler [WEAK]
|
||||
EXPORT SDMMC1_IRQHandler [WEAK]
|
||||
EXPORT SPI3_IRQHandler [WEAK]
|
||||
EXPORT TIM6_DAC_IRQHandler [WEAK]
|
||||
EXPORT TIM7_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel1_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel2_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel3_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel4_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel5_IRQHandler [WEAK]
|
||||
EXPORT COMP_IRQHandler [WEAK]
|
||||
EXPORT LPTIM1_IRQHandler [WEAK]
|
||||
EXPORT LPTIM2_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel6_IRQHandler [WEAK]
|
||||
EXPORT DMA2_Channel7_IRQHandler [WEAK]
|
||||
EXPORT LPUART1_IRQHandler [WEAK]
|
||||
EXPORT QUADSPI_IRQHandler [WEAK]
|
||||
EXPORT I2C3_EV_IRQHandler [WEAK]
|
||||
EXPORT I2C3_ER_IRQHandler [WEAK]
|
||||
EXPORT SAI1_IRQHandler [WEAK]
|
||||
EXPORT SWPMI1_IRQHandler [WEAK]
|
||||
EXPORT TSC_IRQHandler [WEAK]
|
||||
EXPORT RNG_IRQHandler [WEAK]
|
||||
EXPORT FPU_IRQHandler [WEAK]
|
||||
EXPORT CRS_IRQHandler [WEAK]
|
||||
|
||||
WWDG_IRQHandler
|
||||
PVD_PVM_IRQHandler
|
||||
TAMP_STAMP_IRQHandler
|
||||
RTC_WKUP_IRQHandler
|
||||
FLASH_IRQHandler
|
||||
RCC_IRQHandler
|
||||
EXTI0_IRQHandler
|
||||
EXTI1_IRQHandler
|
||||
EXTI2_IRQHandler
|
||||
EXTI3_IRQHandler
|
||||
EXTI4_IRQHandler
|
||||
DMA1_Channel1_IRQHandler
|
||||
DMA1_Channel2_IRQHandler
|
||||
DMA1_Channel3_IRQHandler
|
||||
DMA1_Channel4_IRQHandler
|
||||
DMA1_Channel5_IRQHandler
|
||||
DMA1_Channel6_IRQHandler
|
||||
DMA1_Channel7_IRQHandler
|
||||
ADC1_IRQHandler
|
||||
CAN1_TX_IRQHandler
|
||||
CAN1_RX0_IRQHandler
|
||||
CAN1_RX1_IRQHandler
|
||||
CAN1_SCE_IRQHandler
|
||||
EXTI9_5_IRQHandler
|
||||
TIM1_BRK_TIM15_IRQHandler
|
||||
TIM1_UP_TIM16_IRQHandler
|
||||
TIM1_TRG_COM_IRQHandler
|
||||
TIM1_CC_IRQHandler
|
||||
TIM2_IRQHandler
|
||||
I2C1_EV_IRQHandler
|
||||
I2C1_ER_IRQHandler
|
||||
I2C2_EV_IRQHandler
|
||||
I2C2_ER_IRQHandler
|
||||
SPI1_IRQHandler
|
||||
SPI2_IRQHandler
|
||||
USART1_IRQHandler
|
||||
USART2_IRQHandler
|
||||
USART3_IRQHandler
|
||||
EXTI15_10_IRQHandler
|
||||
RTC_Alarm_IRQHandler
|
||||
SDMMC1_IRQHandler
|
||||
SPI3_IRQHandler
|
||||
TIM6_DAC_IRQHandler
|
||||
TIM7_IRQHandler
|
||||
DMA2_Channel1_IRQHandler
|
||||
DMA2_Channel2_IRQHandler
|
||||
DMA2_Channel3_IRQHandler
|
||||
DMA2_Channel4_IRQHandler
|
||||
DMA2_Channel5_IRQHandler
|
||||
COMP_IRQHandler
|
||||
LPTIM1_IRQHandler
|
||||
LPTIM2_IRQHandler
|
||||
DMA2_Channel6_IRQHandler
|
||||
DMA2_Channel7_IRQHandler
|
||||
LPUART1_IRQHandler
|
||||
QUADSPI_IRQHandler
|
||||
I2C3_EV_IRQHandler
|
||||
I2C3_ER_IRQHandler
|
||||
SAI1_IRQHandler
|
||||
SWPMI1_IRQHandler
|
||||
TSC_IRQHandler
|
||||
RNG_IRQHandler
|
||||
FPU_IRQHandler
|
||||
CRS_IRQHandler
|
||||
|
||||
B .
|
||||
|
||||
ENDP
|
||||
|
||||
ALIGN
|
||||
|
||||
;*******************************************************************************
|
||||
; User Stack and Heap initialization
|
||||
;*******************************************************************************
|
||||
IF :DEF:__MICROLIB
|
||||
|
||||
EXPORT __initial_sp
|
||||
EXPORT __heap_base
|
||||
EXPORT __heap_limit
|
||||
|
||||
ELSE
|
||||
|
||||
IMPORT __use_two_region_memory
|
||||
EXPORT __user_initial_stackheap
|
||||
|
||||
__user_initial_stackheap
|
||||
|
||||
LDR R0, = Heap_Mem
|
||||
LDR R1, =(Stack_Mem + Stack_Size)
|
||||
LDR R2, = (Heap_Mem + Heap_Size)
|
||||
LDR R3, = Stack_Mem
|
||||
BX LR
|
||||
|
||||
ALIGN
|
||||
|
||||
ENDIF
|
||||
|
||||
END
|
||||
|
||||
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
|
||||
|
|
@ -9,7 +9,7 @@ E53_IA1_Data_TypeDef E53_IA1_Data;
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: Init_BH1750
|
||||
* 说 明: 写命令初始化 BH1750
|
||||
* 说 明: 写命令初始化BH1750
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -21,7 +21,7 @@ void Init_BH1750(void)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: Start_BH1750
|
||||
* 说 明: 启动 BH1750
|
||||
* 说 明: 启动BH1750
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -53,7 +53,7 @@ float Convert_BH1750(void)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: SHT30_reset
|
||||
* 说 明: SHT30 复位
|
||||
* 说 明: SHT30复位
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -67,7 +67,7 @@ void SHT30_reset(void)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: Init_SHT30
|
||||
* 说 明: 初始化 SHT30,设置测量周期
|
||||
* 说 明: 初始化SHT30,设置测量周期
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -151,7 +151,7 @@ float SHT3x_CalcRH(unsigned short u16sRH)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: Init_Motor
|
||||
* 说 明: 初始化 Init_E53_IA1 的马达
|
||||
* 说 明: 初始化Init_E53_IA1的马达
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -204,7 +204,7 @@ void light_control(char mode){
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: Init_Light
|
||||
* 说 明: 初始化 Init_E53_IA1 的补光灯
|
||||
* 说 明: 初始化Init_E53_IA1的补光灯
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -227,7 +227,7 @@ void Init_Light(void)
|
|||
}
|
||||
/***************************************************************
|
||||
* 函数名称: Init_E53_IA1
|
||||
* 说 明: 初始化 Init_E53_IA1
|
||||
* 说 明: 初始化Init_E53_IA1
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ TIM_HandleTypeDef htim16;
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: MX_TIM16_Init
|
||||
* 说 明: 初始化定时器 16
|
||||
* 说 明: 初始化定时器16
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -65,7 +65,7 @@ void MX_TIM16_Init(void)
|
|||
}
|
||||
/***************************************************************
|
||||
* 函数名称: HAL_TIM_Base_MspInit
|
||||
* 说 明: 使能定时器 16 时钟,设置时钟源
|
||||
* 说 明: 使能定时器16时钟,设置时钟源
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -87,7 +87,7 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: HAL_TIM_MspPostInit
|
||||
* 说 明: 使能定时器 16 硬件初始化
|
||||
* 说 明: 使能定时器16硬件初始化
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -120,7 +120,7 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: MX_ADC1_Init
|
||||
* 说 明: 初始化 ADC1 电压采集通道
|
||||
* 说 明: 初始化ADC1电压采集通道
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -168,7 +168,7 @@ void MX_ADC1_Init(void)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: HAL_ADC_MspInit
|
||||
* 说 明: 使能 ADC 时钟,设置时钟源
|
||||
* 说 明: 使能ADC时钟,设置时钟源
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -200,7 +200,7 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: Init_Beep
|
||||
* 说 明: 初始化 E53_SF1 的蜂鸣器
|
||||
* 说 明: 初始化E53_SF1的蜂鸣器
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -224,7 +224,7 @@ void Init_Beep(void)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: Init_LED
|
||||
* 说 明: 初始化 E53_SF1 的 LED 灯
|
||||
* 说 明: 初始化E53_SF1的LED灯
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -247,7 +247,7 @@ void Init_LED(void)
|
|||
}
|
||||
/***************************************************************
|
||||
* 函数名称: Init_E53_SF1
|
||||
* 说 明: 初始化 E53_SF1 扩展板
|
||||
* 说 明: 初始化E53_SF1扩展板
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -272,10 +272,10 @@ void E53_SF1_Read_Data(void)
|
|||
}
|
||||
/***************************************************************
|
||||
* 函数名称: E53SF1_LED_StatusSet
|
||||
* 说 明: E53SF1 开发板上的 LED 灯的亮灭控制
|
||||
* 参 数: status,LED 灯的状态
|
||||
* 非 1,关灯
|
||||
* 1,开灯
|
||||
* 说 明: E53SF1开发板上的LED灯的亮灭控制
|
||||
* 参 数: status,LED灯的状态
|
||||
* 非1,关灯
|
||||
* 1,开灯
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
void E53SF1_LED_StatusSet(E53SF1_Status_ENUM status)
|
||||
|
|
@ -285,10 +285,10 @@ void E53SF1_LED_StatusSet(E53SF1_Status_ENUM status)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: E53SF1_BEEP
|
||||
* 说 明: E53SF1 蜂鸣器报警与否
|
||||
* 参 数: status,LED_ENUM 枚举的数据
|
||||
* LED_OFF,关灯
|
||||
* LED_ON,开灯
|
||||
* 说 明: E53SF1蜂鸣器报警与否
|
||||
* 参 数: status,LED_ENUM枚举的数据
|
||||
* LED_OFF,关灯
|
||||
* LED_ON,开灯
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
void E53SF1_Beep(E53SF1_Status_ENUM status)
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ extern E53_SF1_Data_TypeDef E53_SF1_Data;
|
|||
|
||||
/***************************************************************
|
||||
* 名 称: GasStatus_ENUM
|
||||
* 说 明: 枚举状态结构体
|
||||
* 说 明:枚举状态结构体
|
||||
***************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ TIM_HandleTypeDef htim16;
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: MX_TIM16_Init
|
||||
* 说 明: 初始化定时器 16
|
||||
* 说 明: 初始化定时器16
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -69,7 +69,7 @@ void MX_TIM16_Init(void)
|
|||
}
|
||||
/***************************************************************
|
||||
* 函数名称: HAL_TIM_Base_MspInit
|
||||
* 说 明: 使能定时器 16 时钟,设置时钟源
|
||||
* 说 明: 使能定时器16时钟,设置时钟源
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -91,7 +91,7 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: HAL_TIM_MspPostInit
|
||||
* 说 明: 使能定时器 16 硬件初始化
|
||||
* 说 明: 使能定时器16硬件初始化
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -124,7 +124,7 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: Init_Beep
|
||||
* 说 明: 初始化 E53_ST1 的蜂鸣器
|
||||
* 说 明: 初始化E53_ST1的蜂鸣器
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -148,7 +148,7 @@ void Init_Beep(void)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: Init_LED
|
||||
* 说 明: 初始化 E53_ST1 的 LED 灯
|
||||
* 说 明: 初始化E53_ST1的LED灯
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -171,7 +171,7 @@ void Init_LED(void)
|
|||
}
|
||||
/***************************************************************
|
||||
* 函数名称: Init_GPS_POW
|
||||
* 说 明: 初始化 E53_ST1 的 GPS 使能引脚
|
||||
* 说 明: 初始化E53_ST1的GPS使能引脚
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -194,7 +194,7 @@ void Init_GPS_POW(void)
|
|||
}
|
||||
/***************************************************************
|
||||
* 函数名称: GPS_Init
|
||||
* 说 明: 初始化 GPS 模块
|
||||
* 说 明: 初始化GPS模块
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -208,7 +208,7 @@ void GPS_Init(void)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: Init_E53_ST1
|
||||
* 说 明: 初始化 E53_ST1 扩展板
|
||||
* 说 明: 初始化E53_ST1扩展板
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -223,10 +223,10 @@ void Init_E53_ST1(void)
|
|||
|
||||
/***************************************************\
|
||||
* 函数名称: NMEA_Comma_Pos
|
||||
* 函数功能:从 buf 里面得到第 cx 个逗号所在的位置
|
||||
* 函数功能:从buf里面得到第cx个逗号所在的位置
|
||||
* 输入值:
|
||||
* 返回值:0~0xFE,代表逗号所在位置的偏移
|
||||
* 0xFF,代表不存在第 cx 个逗号
|
||||
* 0xFF,代表不存在第cx个逗号
|
||||
\***************************************************/
|
||||
|
||||
uint8_t NMEA_Comma_Pos(uint8_t *buf,uint8_t cx)
|
||||
|
|
@ -242,8 +242,8 @@ uint8_t NMEA_Comma_Pos(uint8_t *buf,uint8_t cx)
|
|||
}
|
||||
/***************************************************\
|
||||
* 函数名称: NMEA_Pow
|
||||
* 函数功能:返回 m 的 n 次方值
|
||||
* 输入值:底数 m 和指数 n
|
||||
* 函数功能:返回m的n次方值
|
||||
* 输入值:底数m和指数n
|
||||
* 返回值:m^n
|
||||
\***************************************************/
|
||||
uint32_t NMEA_Pow(uint8_t m,uint8_t n)
|
||||
|
|
@ -254,7 +254,7 @@ uint32_t NMEA_Pow(uint8_t m,uint8_t n)
|
|||
}
|
||||
/***************************************************\
|
||||
* 函数名称: NMEA_Str2num
|
||||
* 函数功能:str 数字转换为(int)数字,以','或者'*'结束
|
||||
* 函数功能:str数字转换为(int)数字,以','或者'*'结束
|
||||
* 输入值:buf,数字存储区
|
||||
* dx,小数点位数,返回给调用函数
|
||||
* 返回值:转换后的数值
|
||||
|
|
@ -271,14 +271,14 @@ int NMEA_Str2num(uint8_t *buf,uint8_t*dx)
|
|||
if(*p=='-'){mask |= 0x02;p++;}//说明有负数
|
||||
if(*p==','||*p=='*')break;//遇到结束符
|
||||
if(*p=='.'){mask |= 0x01;p++;}//遇到小数点
|
||||
else if(*p>'9'||(*p<'0'))//数字不在 0 和 9 之内,说明有非法字符
|
||||
else if(*p>'9'||(*p<'0'))//数字不在0和9之内,说明有非法字符
|
||||
{
|
||||
ilen = 0;
|
||||
flen = 0;
|
||||
break;
|
||||
}
|
||||
if(mask&0x01)flen++;//小数点的位数
|
||||
else ilen++;//str 长度加一
|
||||
else ilen++;//str长度加一
|
||||
p++;//下一个字符
|
||||
}
|
||||
if(mask&0x02)buf++;//移到下一位,除去负号
|
||||
|
|
@ -298,9 +298,9 @@ int NMEA_Str2num(uint8_t *buf,uint8_t*dx)
|
|||
}
|
||||
/***************************************************\
|
||||
* 函数名称: NMEA_BDS_GPRMC_Analysis
|
||||
* 函数功能:解析 GPRMC 信息
|
||||
* 输入值:gpsx,NMEA 信息结构体
|
||||
* buf:接收到的 GPS 数据缓冲区首地址
|
||||
* 函数功能:解析GPRMC信息
|
||||
* 输入值:gpsx,NMEA信息结构体
|
||||
* buf:接收到的GPS数据缓冲区首地址
|
||||
\***************************************************/
|
||||
void NMEA_BDS_GPRMC_Analysis(gps_msg *gpsmsg,uint8_t *buf)
|
||||
{
|
||||
|
|
@ -308,7 +308,7 @@ void NMEA_BDS_GPRMC_Analysis(gps_msg *gpsmsg,uint8_t *buf)
|
|||
uint8_t posx;
|
||||
uint32_t temp;
|
||||
float rs;
|
||||
p4=(uint8_t*)strstr((const char *)buf,"$GPRMC");//"$GPRMC",经常有&和 GPRMC 分开的情况,故只判断 GPRMC.
|
||||
p4=(uint8_t*)strstr((const char *)buf,"$GPRMC");//"$GPRMC",经常有&和GPRMC分开的情况,故只判断GPRMC.
|
||||
posx=NMEA_Comma_Pos(p4,3); //得到纬度
|
||||
if(posx!=0XFF)
|
||||
{
|
||||
|
|
@ -333,7 +333,7 @@ void NMEA_BDS_GPRMC_Analysis(gps_msg *gpsmsg,uint8_t *buf)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: E53_ST1_Read_Data
|
||||
* 说 明: 获取 GPS 经纬度信息
|
||||
* 说 明: 获取GPS经纬度信息
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
|
|
@ -347,10 +347,10 @@ void E53_ST1_Read_Data(void)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: E53_ST1_LED_StatusSet
|
||||
* 说 明: E53 ST1 开发板上的 LED 灯的亮灭控制
|
||||
* 参 数: status,LED 灯的状态
|
||||
* 非 1,关灯
|
||||
* 1,开灯
|
||||
* 说 明: E53 ST1开发板上的LED灯的亮灭控制
|
||||
* 参 数: status,LED灯的状态
|
||||
* 非1,关灯
|
||||
* 1,开灯
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
void E53_ST1_LED_StatusSet(E53ST1_Status_ENUM status)
|
||||
|
|
@ -360,10 +360,10 @@ void E53_ST1_LED_StatusSet(E53ST1_Status_ENUM status)
|
|||
|
||||
/***************************************************************
|
||||
* 函数名称: E53_ST1_Beep
|
||||
* 说 明: E53 ST1 蜂鸣器报警与否
|
||||
* 参 数: status,LED_ENUM 枚举的数据
|
||||
* ST1_OFF,关蜂鸣器
|
||||
* ST1_ON,开蜂鸣器
|
||||
* 说 明: E53 ST1蜂鸣器报警与否
|
||||
* 参 数: status,LED_ENUM枚举的数据
|
||||
* ST1_OFF,关蜂鸣器
|
||||
* ST1_ON,开蜂鸣器
|
||||
* 返 回 值: 无
|
||||
***************************************************************/
|
||||
void E53_ST1_Beep(E53ST1_Status_ENUM status)
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
/***************************************************************
|
||||
* 名 称: GasStatus_ENUM
|
||||
* 说 明: 枚举状态结构体
|
||||
* 说 明:枚举状态结构体
|
||||
***************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
|
|
@ -31,10 +31,10 @@ typedef enum
|
|||
\***************************************************/
|
||||
__packed typedef struct
|
||||
{
|
||||
uint32_t latitude_bd; //纬度 分扩大 100000 倍,实际要除以 100000
|
||||
uint8_t nshemi_bd; //北纬/南纬,N:北纬;S:南纬
|
||||
uint32_t longitude_bd; //经度 分扩大 100000 倍,实际要除以 100000
|
||||
uint8_t ewhemi_bd; //东经/西经,E:东经;W:西经
|
||||
uint32_t latitude_bd; //纬度 分扩大100000倍,实际要除以100000
|
||||
uint8_t nshemi_bd; //北纬/南纬,N:北纬;S:南纬
|
||||
uint32_t longitude_bd; //经度 分扩大100000倍,实际要除以100000
|
||||
uint8_t ewhemi_bd; //东经/西经,E:东经;W:西经
|
||||
}gps_msg;
|
||||
|
||||
/* E53_ST1传感器数据类型定义 ------------------------------------------------------------*/
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
#define TOS_CFG_OBJECT_VERIFY_EN 1u
|
||||
|
||||
#define TOS_CFG_OBJ_DYNAMIC_CREATE_EN 1u
|
||||
#define TOS_CFG_TASK_DYNAMIC_CREATE_EN 0u
|
||||
|
||||
#define TOS_CFG_EVENT_EN 1u
|
||||
|
||||
|
|
|
|||
|
|
@ -1,44 +0,0 @@
|
|||
cmake_minimum_required(VERSION 3.8)
|
||||
|
||||
project(ini_test)
|
||||
|
||||
set(CMAKE_BUILD_TYPE "Debug")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
|
||||
|
||||
set(TINY_ROOT ../../../)
|
||||
|
||||
include_directories(${TINY_ROOT}/osal/cmsis_os)
|
||||
include_directories(${TINY_ROOT}/kernel/core/include)
|
||||
include_directories(${TINY_ROOT}/kernel/evtdrv/include)
|
||||
include_directories(${TINY_ROOT}/kernel/hal/include)
|
||||
include_directories(${TINY_ROOT}/kernel/pm/include)
|
||||
|
||||
set(CMSIS_SRCS ${TINY_ROOT}/osal/cmsis_os/cmsis_os.c)
|
||||
aux_source_directory(${TINY_ROOT}/kernel/core CORE_SRCS)
|
||||
aux_source_directory(${TINY_ROOT}/kernel/evtdrv EVTDRV_SRCS)
|
||||
aux_source_directory(${TINY_ROOT}/kernel/pm PM_SRCS)
|
||||
|
||||
set(ARCH_ROOT ${TINY_ROOT}/arch/linux)
|
||||
|
||||
include_directories(${ARCH_ROOT}/common/include)
|
||||
include_directories(${ARCH_ROOT}/posix/gcc)
|
||||
include_directories(${TINY_ROOT}/components/utils/Bcrypt/include)
|
||||
|
||||
aux_source_directory(${ARCH_ROOT}/common ARCH_COMMON_SRCS)
|
||||
aux_source_directory(${ARCH_ROOT}/posix/gcc ARCH_POSIX_SRCS)
|
||||
|
||||
aux_source_directory(${TINY_ROOT}/components/utils/Bcrypt/src BCRYPT_SRCS)
|
||||
|
||||
set(ARCH_SRCS ${ARCH_COMMON_SRCS} ${ARCH_POSIX_SRCS})
|
||||
|
||||
set(TINY_SRCS ${ARCH_SRCS} ${CMSIS_SRCS} ${EVTDRV_SRCS} ${PM_SRCS} ${CORE_SRCS} ${BCRYPT_SRCS} )
|
||||
|
||||
include_directories(./)
|
||||
include_directories(./inc)
|
||||
|
||||
set(APP_SRCS src/main.c)
|
||||
|
||||
add_executable(bcrypt_demo ${APP_SRCS} ${TINY_SRCS})
|
||||
|
||||
target_link_libraries(bcrypt_demo pthread)
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
###################################################################
|
||||
#automatic detection QTOP and LOCALDIR
|
||||
CUR_DIR := $(patsubst %/,%,$(dir $(realpath $(firstword $(MAKEFILE_LIST)))))
|
||||
TRYQTOP := $(shell if [ -n "$$QTOP" ] ; then\
|
||||
echo $$QTOP;\
|
||||
else\
|
||||
cd $(CUR_DIR); while /usr/bin/test ! -e qmk ; do \
|
||||
dir=`cd ../;pwd`; \
|
||||
if [ "$$dir" = "/" ] ; then \
|
||||
echo Cannot find QTOP in $(firstword $(MAKEFILE_LIST)) 1>&2; \
|
||||
exit 1; \
|
||||
fi ; \
|
||||
cd $$dir; \
|
||||
done ; \
|
||||
pwd; \
|
||||
fi)
|
||||
QTOP ?= $(realpath ${TRYQTOP})
|
||||
|
||||
ifeq ($(QTOP),)
|
||||
$(error Please run this in a tree)
|
||||
endif
|
||||
LOCALDIR = $(patsubst %/,%,$(subst $(realpath $(QTOP))/,,$(CUR_DIR)))
|
||||
export QTOP
|
||||
|
||||
####################################################################
|
||||
|
||||
|
||||
export BP=Linux_Posix
|
||||
|
||||
TREE_LIB_ENABLE=1
|
||||
lib=
|
||||
subdirs =
|
||||
|
||||
|
||||
all::
|
||||
make -C ${QTOP}/arch BP=${BP}
|
||||
make -C ${QTOP}/kernel BP=${BP}
|
||||
make -C ${QTOP}/osal BP=${BP}
|
||||
make -C ${QTOP}/net BP=${BP}
|
||||
make -C ${QTOP}/devices BP=${BP}
|
||||
exec =
|
||||
LD_A_FILES += $(LIBDIR)/libarch.a
|
||||
LD_A_FILES += $(LIBDIR)/libkernel.a
|
||||
LD_A_FILES += $(LIBDIR)/libbcrypt_demo.a
|
||||
LD_A_FILES += $(LIBDIR)/libcmsis_os.a
|
||||
LDFLAGS += -lpthread
|
||||
|
||||
include ${QTOP}/qmk/generic/Make.exec
|
||||
|
||||
|
||||
|
|
@ -1,236 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file lwipopts.h
|
||||
* @author MCD Application Team
|
||||
* @version V1.1.0
|
||||
* @date 31-July-2013
|
||||
* @brief lwIP Options Configuration.
|
||||
* This file is based on Utilities\lwip_v1.4.1\src\include\lwip\opt.h
|
||||
* and contains the lwIP configuration for the STM32F4x7 demonstration.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© COPYRIGHT 2013 STMicroelectronics</center></h2>
|
||||
*
|
||||
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
|
||||
* You may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.st.com/software_license_agreement_liberty_v2
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __LWIPOPTS_H__
|
||||
#define __LWIPOPTS_H__
|
||||
|
||||
/**
|
||||
* SYS_LIGHTWEIGHT_PROT==1: if you want inter-task protection for certain
|
||||
* critical regions during buffer allocation, deallocation and memory
|
||||
* allocation and deallocation.
|
||||
*/
|
||||
#define SYS_LIGHTWEIGHT_PROT 1
|
||||
|
||||
/**
|
||||
* NO_SYS==1: Provides VERY minimal functionality. Otherwise,
|
||||
* use lwIP facilities.
|
||||
*/
|
||||
#define NO_SYS 0
|
||||
|
||||
/**
|
||||
* NO_SYS_NO_TIMERS==1: Drop support for sys_timeout when NO_SYS==1
|
||||
* Mainly for compatibility to old versions.
|
||||
*/
|
||||
#define NO_SYS_NO_TIMERS 0
|
||||
|
||||
/* ---------- Memory options ---------- */
|
||||
/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which
|
||||
lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2
|
||||
byte alignment -> define MEM_ALIGNMENT to 2. */
|
||||
#define MEM_ALIGNMENT 4
|
||||
|
||||
/* MEM_SIZE: the size of the heap memory. If the application will send
|
||||
a lot of data that needs to be copied, this should be set high. */
|
||||
#define MEM_SIZE (5 * 1024)
|
||||
|
||||
/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application
|
||||
sends a lot of data out of ROM (or other static memory), this
|
||||
should be set high. */
|
||||
#define MEMP_NUM_PBUF 25
|
||||
/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
|
||||
per active UDP "connection". */
|
||||
#define MEMP_NUM_UDP_PCB 4
|
||||
/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP
|
||||
connections. */
|
||||
#define MEMP_NUM_TCP_PCB 6
|
||||
/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP
|
||||
connections. */
|
||||
#define MEMP_NUM_TCP_PCB_LISTEN 6
|
||||
/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
|
||||
segments. */
|
||||
#define MEMP_NUM_TCP_SEG 150
|
||||
/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
|
||||
timeouts. */
|
||||
#define MEMP_NUM_SYS_TIMEOUT 6
|
||||
|
||||
/* ---------- Pbuf options ---------- */
|
||||
/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */
|
||||
#define PBUF_POOL_SIZE 25
|
||||
/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
|
||||
#define PBUF_POOL_BUFSIZE LWIP_MEM_ALIGN_SIZE(TCP_MSS + 40 + PBUF_LINK_ENCAPSULATION_HLEN + PBUF_LINK_HLEN)
|
||||
|
||||
/* ---------- TCP options ---------- */
|
||||
#define LWIP_TCP 1
|
||||
#define TCP_TTL 255
|
||||
|
||||
/* Controls if TCP should queue segments that arrive out of
|
||||
order. Define to 0 if your device is low on memory. */
|
||||
#define TCP_QUEUE_OOSEQ 0
|
||||
|
||||
/* TCP Maximum segment size. */
|
||||
#define TCP_MSS (1500 - 40) /* TCP_MSS = (Ethernet MTU - IP header size - TCP header size) */
|
||||
|
||||
/* TCP sender buffer space (bytes). */
|
||||
#define TCP_SND_BUF (7 * TCP_MSS)
|
||||
|
||||
/* TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least
|
||||
as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. */
|
||||
|
||||
#define TCP_SND_QUEUELEN (8 * TCP_SND_BUF / TCP_MSS)
|
||||
|
||||
/* TCP receive window. */
|
||||
#define TCP_WND (9 * TCP_MSS)
|
||||
|
||||
/* ---------- ICMP options ---------- */
|
||||
#define LWIP_ICMP 1
|
||||
|
||||
/* ---------- DHCP options ---------- */
|
||||
/* Define LWIP_DHCP to 1 if you want DHCP configuration of
|
||||
interfaces. DHCP is not implemented in lwIP 0.5.1, however, so
|
||||
turning this on does currently not work. */
|
||||
#define LWIP_DHCP 1
|
||||
|
||||
/* ---------- UDP options ---------- */
|
||||
#define LWIP_UDP 1
|
||||
#define UDP_TTL 255
|
||||
|
||||
/* ---------- Statistics options ---------- */
|
||||
#define LWIP_STATS 0
|
||||
#define LWIP_PROVIDE_ERRNO 1
|
||||
|
||||
/* ---------- link callback options ---------- */
|
||||
/* LWIP_NETIF_LINK_CALLBACK==1: Support a callback function from an interface
|
||||
* whenever the link changes (i.e., link down)
|
||||
*/
|
||||
#define LWIP_NETIF_LINK_CALLBACK 0
|
||||
/*
|
||||
--------------------------------------
|
||||
---------- Checksum options ----------
|
||||
--------------------------------------
|
||||
*/
|
||||
|
||||
/*
|
||||
The STM32F4x7 allows computing and verifying the IP, UDP, TCP and ICMP checksums by hardware:
|
||||
- To use this feature let the following define uncommented.
|
||||
- To disable it and process by CPU comment the the checksum.
|
||||
*/
|
||||
#define CHECKSUM_BY_HARDWARE
|
||||
//#undef CHECKSUM_BY_HARDWARE
|
||||
|
||||
#ifdef CHECKSUM_BY_HARDWARE
|
||||
/* CHECKSUM_GEN_IP==0: Generate checksums by hardware for outgoing IP packets.*/
|
||||
#define CHECKSUM_GEN_IP 0
|
||||
/* CHECKSUM_GEN_UDP==0: Generate checksums by hardware for outgoing UDP packets.*/
|
||||
#define CHECKSUM_GEN_UDP 0
|
||||
/* CHECKSUM_GEN_TCP==0: Generate checksums by hardware for outgoing TCP packets.*/
|
||||
#define CHECKSUM_GEN_TCP 0
|
||||
/* CHECKSUM_CHECK_IP==0: Check checksums by hardware for incoming IP packets.*/
|
||||
#define CHECKSUM_CHECK_IP 0
|
||||
/* CHECKSUM_CHECK_UDP==0: Check checksums by hardware for incoming UDP packets.*/
|
||||
#define CHECKSUM_CHECK_UDP 0
|
||||
/* CHECKSUM_CHECK_TCP==0: Check checksums by hardware for incoming TCP packets.*/
|
||||
#define CHECKSUM_CHECK_TCP 0
|
||||
/* CHECKSUM_CHECK_ICMP==0: Check checksums by hardware for incoming ICMP packets.*/
|
||||
#define CHECKSUM_GEN_ICMP 0
|
||||
#else
|
||||
/* CHECKSUM_GEN_IP==1: Generate checksums in software for outgoing IP packets.*/
|
||||
#define CHECKSUM_GEN_IP 1
|
||||
/* CHECKSUM_GEN_UDP==1: Generate checksums in software for outgoing UDP packets.*/
|
||||
#define CHECKSUM_GEN_UDP 1
|
||||
/* CHECKSUM_GEN_TCP==1: Generate checksums in software for outgoing TCP packets.*/
|
||||
#define CHECKSUM_GEN_TCP 1
|
||||
/* CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets.*/
|
||||
#define CHECKSUM_CHECK_IP 1
|
||||
/* CHECKSUM_CHECK_UDP==1: Check checksums in software for incoming UDP packets.*/
|
||||
#define CHECKSUM_CHECK_UDP 1
|
||||
/* CHECKSUM_CHECK_TCP==1: Check checksums in software for incoming TCP packets.*/
|
||||
#define CHECKSUM_CHECK_TCP 1
|
||||
/* CHECKSUM_CHECK_ICMP==1: Check checksums by hardware for incoming ICMP packets.*/
|
||||
#define CHECKSUM_GEN_ICMP 1
|
||||
#endif
|
||||
|
||||
#define LWIP_TCPIP_CORE_LOCKING 1
|
||||
|
||||
/*
|
||||
----------------------------------------------
|
||||
---------- Sequential layer options ----------
|
||||
----------------------------------------------
|
||||
*/
|
||||
/**
|
||||
* LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c)
|
||||
*/
|
||||
#define LWIP_NETCONN 1
|
||||
|
||||
/*
|
||||
------------------------------------
|
||||
---------- Socket options ----------
|
||||
------------------------------------
|
||||
*/
|
||||
/**
|
||||
* LWIP_SOCKET==1: Enable Socket API (require to use sockets.c)
|
||||
*/
|
||||
#define LWIP_SOCKET 1
|
||||
|
||||
/*
|
||||
---------------------------------
|
||||
---------- OS options ----------
|
||||
---------------------------------
|
||||
*/
|
||||
|
||||
#define DEFAULT_UDP_RECVMBOX_SIZE 10
|
||||
#define DEFAULT_TCP_RECVMBOX_SIZE 10
|
||||
#define DEFAULT_ACCEPTMBOX_SIZE 10
|
||||
#define DEFAULT_THREAD_STACKSIZE 1024 * 2
|
||||
|
||||
#define TCPIP_THREAD_NAME "lwip"
|
||||
#define TCPIP_THREAD_STACKSIZE 1024
|
||||
#define TCPIP_MBOX_SIZE 10
|
||||
#define TCPIP_THREAD_PRIO 1
|
||||
|
||||
#define LWIP_DNS_API_DECLARE_STRUCTS 1
|
||||
#define LWIP_DNS 1
|
||||
|
||||
/** DNS server IP address */
|
||||
#ifndef DNS_SERVER_ADDRESS
|
||||
#define DNS_SERVER_ADDRESS(ipaddr) (ip4_addr_set_u32(ipaddr, ipaddr_addr("208.67.222.222"))) /* resolver1.opendns.com */
|
||||
#endif
|
||||
|
||||
/*
|
||||
----------------------------------------
|
||||
---------- Lwip Debug options ----------
|
||||
----------------------------------------
|
||||
*/
|
||||
#define LWIP_DEBUG 0
|
||||
|
||||
#define ethernet_with_mac 1
|
||||
|
||||
#endif /* __LWIPOPTS_H__ */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
#ifndef _TOS_CONFIG_H_
|
||||
#define _TOS_CONFIG_H_
|
||||
|
||||
#include "stddef.h"
|
||||
#include "stdint.h"
|
||||
|
||||
#define TOS_CFG_TASK_PRIO_MAX 10u // 配置 TencentOS tiny 默认支持的最大优先级数量
|
||||
|
||||
#define TOS_CFG_ROUND_ROBIN_EN 1u // 配置 TencentOS tiny 的内核是否开启时间片轮转
|
||||
|
||||
#define TOS_CFG_OBJECT_VERIFY_EN 1u // 配置 TencentOS tiny 是否校验指针合法
|
||||
|
||||
#define TOS_CFG_EVENT_EN 1u // TencentOS tiny 事件模块功能宏
|
||||
|
||||
#define TOS_CFG_MMHEAP_EN 1u // 配置 TencentOS tiny 是否开启动态内存模块
|
||||
|
||||
#define TOS_CFG_MMHEAP_POOL_SIZE 0x100 // 配置 TencentOS tiny 动态内存池大小
|
||||
|
||||
#define TOS_CFG_MMHEAP_DEFAULT_POOL_SIZE 0x100 // 配置 TencentOS tiny 动态内存池大小
|
||||
|
||||
#define TOS_CFG_MUTEX_EN 1u // 配置 TencentOS tiny 是否开启互斥锁模块
|
||||
|
||||
#define TOS_CFG_MESSAGE_QUEUE_EN 1u
|
||||
#define TOS_CFG_MAIL_QUEUE_EN 1u
|
||||
|
||||
#define TOS_CFG_PRIORITY_MESSAGE_QUEUE_EN 1u
|
||||
|
||||
#define TOS_CFG_PRIORITY_MAIL_QUEUE_EN 1u
|
||||
#define TOS_CFG_TIMER_EN 1u // 配置 TencentOS tiny 是否开启软件定时器模块
|
||||
|
||||
#define TOS_CFG_SEM_EN 1u // 配置 TencentOS tiny 是否开启信号量模块
|
||||
|
||||
#define TOS_CFG_MMBLK_EN 1u
|
||||
|
||||
#if (TOS_CFG_QUEUE_EN > 0u)
|
||||
#define TOS_CFG_MSG_EN 1u
|
||||
#else
|
||||
#define TOS_CFG_MSG_EN 0u
|
||||
#endif
|
||||
|
||||
#define TOS_CFG_MSG_POOL_SIZE 10u // 配置 TencentOS tiny 消息队列大小
|
||||
|
||||
#define TOS_CFG_IDLE_TASK_STK_SIZE 256u // 配置 TencentOS tiny 空闲任务栈大小
|
||||
|
||||
#define TOS_CFG_CPU_TICK_PER_SECOND 1000u // 配置 TencentOS tiny 的 tick 频率
|
||||
|
||||
#define TOS_CFG_CPU_CLOCK 1000000u // 配置 TencentOS tiny CPU 频率
|
||||
|
||||
#define TOS_CFG_TIMER_AS_PROC 1u // 配置是否将 TIMER 配置成函数模式
|
||||
|
||||
#endif
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
# How to run the demo in linux
|
||||
|
||||
## step1
|
||||
|
||||
make sure your develop environment.
|
||||
|
||||
- `cmake` and version greater than 3.8.2
|
||||
- `gcc` `gdb` `make` is installed
|
||||
|
||||
## step2
|
||||
|
||||
make `build` directory and compile in `build`
|
||||
|
||||
```bash
|
||||
mkdir build && cd build
|
||||
cmake ..
|
||||
make
|
||||
```
|
||||
|
||||
## step3
|
||||
|
||||
run program !!
|
||||
|
||||
```bash
|
||||
# in build directory
|
||||
./bcrypt_demo
|
||||
```
|
||||
|
||||
## other
|
||||
|
||||
you can copy this demo to other path, but if you want do it,
|
||||
you need modify `CMakeLists.txt`. find line
|
||||
|
||||
```cmake
|
||||
set(TINY_ROOT ../../../)
|
||||
```
|
||||
|
||||
and modify `path-to-tinyos`
|
||||
|
||||
```cmake
|
||||
set(TINY_ROOT path-to-tinyos)
|
||||
```
|
||||
|
|
@ -1,84 +0,0 @@
|
|||
#include "cmsis_os.h"
|
||||
#include "bcrypt.h"
|
||||
|
||||
#define TASK1_STK_SIZE 512
|
||||
void task1(void *arg);
|
||||
osThreadDef(task1, osPriorityNormal, 1, TASK1_STK_SIZE);
|
||||
|
||||
int Bcrypt(const char *Src, char *Dst)
|
||||
{
|
||||
int Ret = -1;
|
||||
char Salt[BCRYPT_HASHSIZE] = {0};
|
||||
char Hash[BCRYPT_HASHSIZE] = {0};
|
||||
|
||||
if(NULL == Src)
|
||||
{
|
||||
printf("Src is NULL!\n");
|
||||
goto ErrorHandler;
|
||||
}
|
||||
|
||||
if(NULL == Dst)
|
||||
{
|
||||
printf("Dst is NULL!\n");
|
||||
goto ErrorHandler;
|
||||
}
|
||||
|
||||
Ret = bcrypt_gensalt(12, Salt);
|
||||
if(Ret < 0)
|
||||
{
|
||||
printf("bcrypt_gensalt failed!\n");
|
||||
goto ErrorHandler;
|
||||
}
|
||||
|
||||
Ret = bcrypt_hashpw(Src, Salt, Hash);
|
||||
if(Ret < 0)
|
||||
{
|
||||
printf("bcrypt_hashpw failed!\n");
|
||||
goto ErrorHandler;
|
||||
}
|
||||
|
||||
memcpy(Dst, Hash, sizeof(Hash));
|
||||
|
||||
return 0;
|
||||
|
||||
ErrorHandler:
|
||||
return -1;
|
||||
}
|
||||
|
||||
void task1(void *arg)
|
||||
{
|
||||
int Ret = -1;
|
||||
char Hash[BCRYPT_HASHSIZE] = {0};
|
||||
const char *DeviceKey = "8HLWBzFvOoZDo9wHZnCAKaAZeb8";
|
||||
|
||||
Ret = Bcrypt(DeviceKey, Hash);
|
||||
if(Ret < 0)
|
||||
{
|
||||
printf("Bcrypt failed!\n");
|
||||
return ;
|
||||
}
|
||||
|
||||
printf("Bcrypt DeviceKey = %s\n", Hash);
|
||||
|
||||
while(1)
|
||||
{
|
||||
printf("BcryptTest success!\n");
|
||||
osDelay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
void application_entry(void *arg)
|
||||
{
|
||||
osThreadCreate(osThread(task1), NULL); // Create task1
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
osKernelInitialize(); //TOS Tiny kernel initialize
|
||||
application_entry(NULL);
|
||||
osKernelStart(); //Start TOS Tiny
|
||||
|
||||
while (1)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
cmake_minimum_required(VERSION 3.8)
|
||||
|
||||
project(hello_world)
|
||||
|
||||
set(CMAKE_BUILD_TYPE "Debug")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
|
||||
|
||||
set(TINY_ROOT ../../../)
|
||||
|
||||
include_directories(${TINY_ROOT}/osal/cmsis_os)
|
||||
include_directories(${TINY_ROOT}/kernel/core/include)
|
||||
include_directories(${TINY_ROOT}/kernel/evtdrv/include)
|
||||
include_directories(${TINY_ROOT}/kernel/hal/include)
|
||||
include_directories(${TINY_ROOT}/kernel/pm/include)
|
||||
|
||||
set(CMSIS_SRCS ${TINY_ROOT}/osal/cmsis_os/cmsis_os.c)
|
||||
aux_source_directory(${TINY_ROOT}/kernel/core CORE_SRCS)
|
||||
aux_source_directory(${TINY_ROOT}/kernel/evtdrv EVTDRV_SRCS)
|
||||
aux_source_directory(${TINY_ROOT}/kernel/pm PM_SRCS)
|
||||
|
||||
set(ARCH_ROOT ${TINY_ROOT}/arch/linux)
|
||||
|
||||
include_directories(${ARCH_ROOT}/common/include)
|
||||
include_directories(${ARCH_ROOT}/posix/gcc)
|
||||
|
||||
aux_source_directory(${ARCH_ROOT}/common ARCH_COMMON_SRCS)
|
||||
aux_source_directory(${ARCH_ROOT}/posix/gcc ARCH_POSIX_SRCS)
|
||||
|
||||
set(ARCH_SRCS ${ARCH_COMMON_SRCS} ${ARCH_POSIX_SRCS})
|
||||
|
||||
set(TINY_SRCS ${ARCH_SRCS} ${CMSIS_SRCS} ${EVTDRV_SRCS} ${PM_SRCS} ${CORE_SRCS} )
|
||||
|
||||
include_directories(./)
|
||||
include_directories(./inc)
|
||||
|
||||
set(APP_SRCS src/main.c)
|
||||
|
||||
add_executable(hello_world ${APP_SRCS} ${TINY_SRCS})
|
||||
|
||||
target_link_libraries(hello_world pthread)
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
###################################################################
|
||||
#automatic detection QTOP and LOCALDIR
|
||||
CUR_DIR := $(patsubst %/,%,$(dir $(realpath $(firstword $(MAKEFILE_LIST)))))
|
||||
TRYQTOP := $(shell if [ -n "$$QTOP" ] ; then\
|
||||
echo $$QTOP;\
|
||||
else\
|
||||
cd $(CUR_DIR); while /usr/bin/test ! -e qmk ; do \
|
||||
dir=`cd ../;pwd`; \
|
||||
if [ "$$dir" = "/" ] ; then \
|
||||
echo Cannot find QTOP in $(firstword $(MAKEFILE_LIST)) 1>&2; \
|
||||
exit 1; \
|
||||
fi ; \
|
||||
cd $$dir; \
|
||||
done ; \
|
||||
pwd; \
|
||||
fi)
|
||||
QTOP ?= $(realpath ${TRYQTOP})
|
||||
|
||||
ifeq ($(QTOP),)
|
||||
$(error Please run this in a tree)
|
||||
endif
|
||||
LOCALDIR = $(patsubst %/,%,$(subst $(realpath $(QTOP))/,,$(CUR_DIR)))
|
||||
export QTOP
|
||||
|
||||
####################################################################
|
||||
|
||||
|
||||
export BP=Linux_Posix
|
||||
|
||||
TREE_LIB_ENABLE=1
|
||||
lib=
|
||||
subdirs =
|
||||
|
||||
|
||||
all::
|
||||
make -C ${QTOP}/arch BP=${BP}
|
||||
make -C ${QTOP}/kernel BP=${BP}
|
||||
make -C ${QTOP}/osal BP=${BP}
|
||||
make -C ${QTOP}/net BP=${BP}
|
||||
make -C ${QTOP}/devices BP=${BP}
|
||||
exec =
|
||||
LD_A_FILES += $(LIBDIR)/libarch.a
|
||||
LD_A_FILES += $(LIBDIR)/libkernel.a
|
||||
LD_A_FILES += $(LIBDIR)/libhello_world.a
|
||||
LD_A_FILES += $(LIBDIR)/libcmsis_os.a
|
||||
LDFLAGS += -lpthread
|
||||
|
||||
include ${QTOP}/qmk/generic/Make.exec
|
||||
|
||||
|
||||
|
|
@ -1,236 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file lwipopts.h
|
||||
* @author MCD Application Team
|
||||
* @version V1.1.0
|
||||
* @date 31-July-2013
|
||||
* @brief lwIP Options Configuration.
|
||||
* This file is based on Utilities\lwip_v1.4.1\src\include\lwip\opt.h
|
||||
* and contains the lwIP configuration for the STM32F4x7 demonstration.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© COPYRIGHT 2013 STMicroelectronics</center></h2>
|
||||
*
|
||||
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
|
||||
* You may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.st.com/software_license_agreement_liberty_v2
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __LWIPOPTS_H__
|
||||
#define __LWIPOPTS_H__
|
||||
|
||||
/**
|
||||
* SYS_LIGHTWEIGHT_PROT==1: if you want inter-task protection for certain
|
||||
* critical regions during buffer allocation, deallocation and memory
|
||||
* allocation and deallocation.
|
||||
*/
|
||||
#define SYS_LIGHTWEIGHT_PROT 1
|
||||
|
||||
/**
|
||||
* NO_SYS==1: Provides VERY minimal functionality. Otherwise,
|
||||
* use lwIP facilities.
|
||||
*/
|
||||
#define NO_SYS 0
|
||||
|
||||
/**
|
||||
* NO_SYS_NO_TIMERS==1: Drop support for sys_timeout when NO_SYS==1
|
||||
* Mainly for compatibility to old versions.
|
||||
*/
|
||||
#define NO_SYS_NO_TIMERS 0
|
||||
|
||||
/* ---------- Memory options ---------- */
|
||||
/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which
|
||||
lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2
|
||||
byte alignment -> define MEM_ALIGNMENT to 2. */
|
||||
#define MEM_ALIGNMENT 4
|
||||
|
||||
/* MEM_SIZE: the size of the heap memory. If the application will send
|
||||
a lot of data that needs to be copied, this should be set high. */
|
||||
#define MEM_SIZE (5 * 1024)
|
||||
|
||||
/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application
|
||||
sends a lot of data out of ROM (or other static memory), this
|
||||
should be set high. */
|
||||
#define MEMP_NUM_PBUF 25
|
||||
/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
|
||||
per active UDP "connection". */
|
||||
#define MEMP_NUM_UDP_PCB 4
|
||||
/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP
|
||||
connections. */
|
||||
#define MEMP_NUM_TCP_PCB 6
|
||||
/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP
|
||||
connections. */
|
||||
#define MEMP_NUM_TCP_PCB_LISTEN 6
|
||||
/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
|
||||
segments. */
|
||||
#define MEMP_NUM_TCP_SEG 150
|
||||
/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
|
||||
timeouts. */
|
||||
#define MEMP_NUM_SYS_TIMEOUT 6
|
||||
|
||||
/* ---------- Pbuf options ---------- */
|
||||
/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */
|
||||
#define PBUF_POOL_SIZE 25
|
||||
/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
|
||||
#define PBUF_POOL_BUFSIZE LWIP_MEM_ALIGN_SIZE(TCP_MSS + 40 + PBUF_LINK_ENCAPSULATION_HLEN + PBUF_LINK_HLEN)
|
||||
|
||||
/* ---------- TCP options ---------- */
|
||||
#define LWIP_TCP 1
|
||||
#define TCP_TTL 255
|
||||
|
||||
/* Controls if TCP should queue segments that arrive out of
|
||||
order. Define to 0 if your device is low on memory. */
|
||||
#define TCP_QUEUE_OOSEQ 0
|
||||
|
||||
/* TCP Maximum segment size. */
|
||||
#define TCP_MSS (1500 - 40) /* TCP_MSS = (Ethernet MTU - IP header size - TCP header size) */
|
||||
|
||||
/* TCP sender buffer space (bytes). */
|
||||
#define TCP_SND_BUF (7 * TCP_MSS)
|
||||
|
||||
/* TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least
|
||||
as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. */
|
||||
|
||||
#define TCP_SND_QUEUELEN (8 * TCP_SND_BUF / TCP_MSS)
|
||||
|
||||
/* TCP receive window. */
|
||||
#define TCP_WND (9 * TCP_MSS)
|
||||
|
||||
/* ---------- ICMP options ---------- */
|
||||
#define LWIP_ICMP 1
|
||||
|
||||
/* ---------- DHCP options ---------- */
|
||||
/* Define LWIP_DHCP to 1 if you want DHCP configuration of
|
||||
interfaces. DHCP is not implemented in lwIP 0.5.1, however, so
|
||||
turning this on does currently not work. */
|
||||
#define LWIP_DHCP 1
|
||||
|
||||
/* ---------- UDP options ---------- */
|
||||
#define LWIP_UDP 1
|
||||
#define UDP_TTL 255
|
||||
|
||||
/* ---------- Statistics options ---------- */
|
||||
#define LWIP_STATS 0
|
||||
#define LWIP_PROVIDE_ERRNO 1
|
||||
|
||||
/* ---------- link callback options ---------- */
|
||||
/* LWIP_NETIF_LINK_CALLBACK==1: Support a callback function from an interface
|
||||
* whenever the link changes (i.e., link down)
|
||||
*/
|
||||
#define LWIP_NETIF_LINK_CALLBACK 0
|
||||
/*
|
||||
--------------------------------------
|
||||
---------- Checksum options ----------
|
||||
--------------------------------------
|
||||
*/
|
||||
|
||||
/*
|
||||
The STM32F4x7 allows computing and verifying the IP, UDP, TCP and ICMP checksums by hardware:
|
||||
- To use this feature let the following define uncommented.
|
||||
- To disable it and process by CPU comment the the checksum.
|
||||
*/
|
||||
#define CHECKSUM_BY_HARDWARE
|
||||
//#undef CHECKSUM_BY_HARDWARE
|
||||
|
||||
#ifdef CHECKSUM_BY_HARDWARE
|
||||
/* CHECKSUM_GEN_IP==0: Generate checksums by hardware for outgoing IP packets.*/
|
||||
#define CHECKSUM_GEN_IP 0
|
||||
/* CHECKSUM_GEN_UDP==0: Generate checksums by hardware for outgoing UDP packets.*/
|
||||
#define CHECKSUM_GEN_UDP 0
|
||||
/* CHECKSUM_GEN_TCP==0: Generate checksums by hardware for outgoing TCP packets.*/
|
||||
#define CHECKSUM_GEN_TCP 0
|
||||
/* CHECKSUM_CHECK_IP==0: Check checksums by hardware for incoming IP packets.*/
|
||||
#define CHECKSUM_CHECK_IP 0
|
||||
/* CHECKSUM_CHECK_UDP==0: Check checksums by hardware for incoming UDP packets.*/
|
||||
#define CHECKSUM_CHECK_UDP 0
|
||||
/* CHECKSUM_CHECK_TCP==0: Check checksums by hardware for incoming TCP packets.*/
|
||||
#define CHECKSUM_CHECK_TCP 0
|
||||
/* CHECKSUM_CHECK_ICMP==0: Check checksums by hardware for incoming ICMP packets.*/
|
||||
#define CHECKSUM_GEN_ICMP 0
|
||||
#else
|
||||
/* CHECKSUM_GEN_IP==1: Generate checksums in software for outgoing IP packets.*/
|
||||
#define CHECKSUM_GEN_IP 1
|
||||
/* CHECKSUM_GEN_UDP==1: Generate checksums in software for outgoing UDP packets.*/
|
||||
#define CHECKSUM_GEN_UDP 1
|
||||
/* CHECKSUM_GEN_TCP==1: Generate checksums in software for outgoing TCP packets.*/
|
||||
#define CHECKSUM_GEN_TCP 1
|
||||
/* CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets.*/
|
||||
#define CHECKSUM_CHECK_IP 1
|
||||
/* CHECKSUM_CHECK_UDP==1: Check checksums in software for incoming UDP packets.*/
|
||||
#define CHECKSUM_CHECK_UDP 1
|
||||
/* CHECKSUM_CHECK_TCP==1: Check checksums in software for incoming TCP packets.*/
|
||||
#define CHECKSUM_CHECK_TCP 1
|
||||
/* CHECKSUM_CHECK_ICMP==1: Check checksums by hardware for incoming ICMP packets.*/
|
||||
#define CHECKSUM_GEN_ICMP 1
|
||||
#endif
|
||||
|
||||
#define LWIP_TCPIP_CORE_LOCKING 1
|
||||
|
||||
/*
|
||||
----------------------------------------------
|
||||
---------- Sequential layer options ----------
|
||||
----------------------------------------------
|
||||
*/
|
||||
/**
|
||||
* LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c)
|
||||
*/
|
||||
#define LWIP_NETCONN 1
|
||||
|
||||
/*
|
||||
------------------------------------
|
||||
---------- Socket options ----------
|
||||
------------------------------------
|
||||
*/
|
||||
/**
|
||||
* LWIP_SOCKET==1: Enable Socket API (require to use sockets.c)
|
||||
*/
|
||||
#define LWIP_SOCKET 1
|
||||
|
||||
/*
|
||||
---------------------------------
|
||||
---------- OS options ----------
|
||||
---------------------------------
|
||||
*/
|
||||
|
||||
#define DEFAULT_UDP_RECVMBOX_SIZE 10
|
||||
#define DEFAULT_TCP_RECVMBOX_SIZE 10
|
||||
#define DEFAULT_ACCEPTMBOX_SIZE 10
|
||||
#define DEFAULT_THREAD_STACKSIZE 1024 * 2
|
||||
|
||||
#define TCPIP_THREAD_NAME "lwip"
|
||||
#define TCPIP_THREAD_STACKSIZE 1024
|
||||
#define TCPIP_MBOX_SIZE 10
|
||||
#define TCPIP_THREAD_PRIO 1
|
||||
|
||||
#define LWIP_DNS_API_DECLARE_STRUCTS 1
|
||||
#define LWIP_DNS 1
|
||||
|
||||
/** DNS server IP address */
|
||||
#ifndef DNS_SERVER_ADDRESS
|
||||
#define DNS_SERVER_ADDRESS(ipaddr) (ip4_addr_set_u32(ipaddr, ipaddr_addr("208.67.222.222"))) /* resolver1.opendns.com */
|
||||
#endif
|
||||
|
||||
/*
|
||||
----------------------------------------
|
||||
---------- Lwip Debug options ----------
|
||||
----------------------------------------
|
||||
*/
|
||||
#define LWIP_DEBUG 0
|
||||
|
||||
#define ethernet_with_mac 1
|
||||
|
||||
#endif /* __LWIPOPTS_H__ */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
#ifndef _TOS_CONFIG_H_
|
||||
#define _TOS_CONFIG_H_
|
||||
|
||||
#include "stddef.h"
|
||||
#include "stdint.h"
|
||||
|
||||
#define TOS_CFG_TASK_PRIO_MAX 10u // 配置 TencentOS tiny 默认支持的最大优先级数量
|
||||
|
||||
#define TOS_CFG_ROUND_ROBIN_EN 1u // 配置 TencentOS tiny 的内核是否开启时间片轮转
|
||||
|
||||
#define TOS_CFG_OBJECT_VERIFY_EN 1u // 配置 TencentOS tiny 是否校验指针合法
|
||||
|
||||
#define TOS_CFG_EVENT_EN 1u // TencentOS tiny 事件模块功能宏
|
||||
|
||||
#define TOS_CFG_MMHEAP_EN 1u // 配置 TencentOS tiny 是否开启动态内存模块
|
||||
|
||||
#define TOS_CFG_MMHEAP_POOL_SIZE 0x100 // 配置 TencentOS tiny 动态内存池大小
|
||||
|
||||
#define TOS_CFG_MMHEAP_DEFAULT_POOL_SIZE 0x100 // 配置 TencentOS tiny 动态内存池大小
|
||||
|
||||
#define TOS_CFG_MUTEX_EN 1u // 配置 TencentOS tiny 是否开启互斥锁模块
|
||||
|
||||
#define TOS_CFG_MESSAGE_QUEUE_EN 1u
|
||||
#define TOS_CFG_MAIL_QUEUE_EN 1u
|
||||
|
||||
#define TOS_CFG_PRIORITY_MESSAGE_QUEUE_EN 1u
|
||||
|
||||
#define TOS_CFG_PRIORITY_MAIL_QUEUE_EN 1u
|
||||
#define TOS_CFG_TIMER_EN 1u // 配置 TencentOS tiny 是否开启软件定时器模块
|
||||
|
||||
#define TOS_CFG_SEM_EN 1u // 配置 TencentOS tiny 是否开启信号量模块
|
||||
|
||||
#define TOS_CFG_MMBLK_EN 1u
|
||||
|
||||
#if (TOS_CFG_QUEUE_EN > 0u)
|
||||
#define TOS_CFG_MSG_EN 1u
|
||||
#else
|
||||
#define TOS_CFG_MSG_EN 0u
|
||||
#endif
|
||||
|
||||
#define TOS_CFG_MSG_POOL_SIZE 10u // 配置 TencentOS tiny 消息队列大小
|
||||
|
||||
#define TOS_CFG_IDLE_TASK_STK_SIZE 256u // 配置 TencentOS tiny 空闲任务栈大小
|
||||
|
||||
#define TOS_CFG_CPU_TICK_PER_SECOND 1000u // 配置 TencentOS tiny 的 tick 频率
|
||||
|
||||
#define TOS_CFG_CPU_CLOCK 1000000u // 配置 TencentOS tiny CPU 频率
|
||||
|
||||
#define TOS_CFG_TIMER_AS_PROC 1u // 配置是否将 TIMER 配置成函数模式
|
||||
|
||||
#endif
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
# How to run the demo in linux
|
||||
|
||||
## step1
|
||||
|
||||
make sure your develop environment.
|
||||
|
||||
- `cmake` and version greater than 3.8.2
|
||||
- `gcc` `gdb` `make` is installed
|
||||
|
||||
## step2
|
||||
|
||||
make `build` directory and compile in `build`
|
||||
|
||||
```bash
|
||||
mkdir build && cd build
|
||||
cmake ..
|
||||
make
|
||||
```
|
||||
|
||||
## step3
|
||||
|
||||
run program !!
|
||||
|
||||
```bash
|
||||
# in build directory
|
||||
./hello_world
|
||||
```
|
||||
|
||||
## other
|
||||
|
||||
you can copy this demo to other path, but if you want do it,
|
||||
you need modify `CMakeLists.txt`. find line
|
||||
|
||||
```cmake
|
||||
set(TINY_ROOT ../../../)
|
||||
```
|
||||
|
||||
and modify `path-to-tinyos`
|
||||
|
||||
```cmake
|
||||
set(TINY_ROOT path-to-tinyos)
|
||||
```
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
#include "cmsis_os.h"
|
||||
|
||||
#define TASK1_STK_SIZE 512
|
||||
void task1(void *arg);
|
||||
osThreadDef(task1, osPriorityNormal, 1, TASK1_STK_SIZE);
|
||||
|
||||
#define TASK2_STK_SIZE 512
|
||||
void task2(void *arg);
|
||||
osThreadDef(task2, osPriorityNormal, 1, TASK2_STK_SIZE);
|
||||
|
||||
void task1(void *arg)
|
||||
{
|
||||
int count = 1;
|
||||
while (1) {
|
||||
printf("###This is task1, %d\r\n", count++);
|
||||
osDelay(2000);
|
||||
}
|
||||
}
|
||||
|
||||
void task2(void *arg)
|
||||
{
|
||||
int count = 1;
|
||||
while (1) {
|
||||
#if TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN > 0u
|
||||
k_err_t rc;
|
||||
int depth;
|
||||
|
||||
rc = tos_task_stack_draught_depth(K_NULL, &depth);
|
||||
printf("%d %d\n", rc, depth);
|
||||
#endif
|
||||
|
||||
printf("***This is task2, %d\r\n", count++);
|
||||
osDelay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
void application_entry(void *arg)
|
||||
{
|
||||
osThreadCreate(osThread(task1), NULL); // Create task1
|
||||
osThreadCreate(osThread(task2), NULL); // Create task2
|
||||
}
|
||||
|
||||
|
||||
int main(void)
|
||||
{
|
||||
osKernelInitialize(); //TOS Tiny kernel initialize
|
||||
application_entry(NULL);
|
||||
osKernelStart(); //Start TOS Tiny
|
||||
|
||||
while (1)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
cmake_minimum_required(VERSION 3.8)
|
||||
|
||||
project(ini_test)
|
||||
|
||||
set(CMAKE_BUILD_TYPE "Debug")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
|
||||
|
||||
set(TINY_ROOT ../../../)
|
||||
|
||||
include_directories(${TINY_ROOT}/osal/cmsis_os)
|
||||
include_directories(${TINY_ROOT}/kernel/core/include)
|
||||
include_directories(${TINY_ROOT}/kernel/evtdrv/include)
|
||||
include_directories(${TINY_ROOT}/kernel/hal/include)
|
||||
include_directories(${TINY_ROOT}/kernel/pm/include)
|
||||
|
||||
set(CMSIS_SRCS ${TINY_ROOT}/osal/cmsis_os/cmsis_os.c)
|
||||
aux_source_directory(${TINY_ROOT}/kernel/core CORE_SRCS)
|
||||
aux_source_directory(${TINY_ROOT}/kernel/evtdrv EVTDRV_SRCS)
|
||||
aux_source_directory(${TINY_ROOT}/kernel/pm PM_SRCS)
|
||||
|
||||
set(ARCH_ROOT ${TINY_ROOT}/arch/linux)
|
||||
|
||||
include_directories(${ARCH_ROOT}/common/include)
|
||||
include_directories(${ARCH_ROOT}/posix/gcc)
|
||||
include_directories(${TINY_ROOT}/components/utils/INI/include)
|
||||
|
||||
aux_source_directory(${ARCH_ROOT}/common ARCH_COMMON_SRCS)
|
||||
aux_source_directory(${ARCH_ROOT}/posix/gcc ARCH_POSIX_SRCS)
|
||||
|
||||
aux_source_directory(${TINY_ROOT}/components/utils/INI/src INI_SRCS)
|
||||
|
||||
set(ARCH_SRCS ${ARCH_COMMON_SRCS} ${ARCH_POSIX_SRCS})
|
||||
|
||||
set(TINY_SRCS ${ARCH_SRCS} ${CMSIS_SRCS} ${EVTDRV_SRCS} ${PM_SRCS} ${CORE_SRCS} ${INI_SRCS} )
|
||||
|
||||
include_directories(./)
|
||||
include_directories(./inc)
|
||||
|
||||
set(APP_SRCS src/main.c)
|
||||
|
||||
add_executable(inidemo ${APP_SRCS} ${TINY_SRCS})
|
||||
|
||||
target_link_libraries(inidemo pthread)
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
###################################################################
|
||||
#automatic detection QTOP and LOCALDIR
|
||||
CUR_DIR := $(patsubst %/,%,$(dir $(realpath $(firstword $(MAKEFILE_LIST)))))
|
||||
TRYQTOP := $(shell if [ -n "$$QTOP" ] ; then\
|
||||
echo $$QTOP;\
|
||||
else\
|
||||
cd $(CUR_DIR); while /usr/bin/test ! -e qmk ; do \
|
||||
dir=`cd ../;pwd`; \
|
||||
if [ "$$dir" = "/" ] ; then \
|
||||
echo Cannot find QTOP in $(firstword $(MAKEFILE_LIST)) 1>&2; \
|
||||
exit 1; \
|
||||
fi ; \
|
||||
cd $$dir; \
|
||||
done ; \
|
||||
pwd; \
|
||||
fi)
|
||||
QTOP ?= $(realpath ${TRYQTOP})
|
||||
|
||||
ifeq ($(QTOP),)
|
||||
$(error Please run this in a tree)
|
||||
endif
|
||||
LOCALDIR = $(patsubst %/,%,$(subst $(realpath $(QTOP))/,,$(CUR_DIR)))
|
||||
export QTOP
|
||||
|
||||
####################################################################
|
||||
|
||||
|
||||
export BP=Linux_Posix
|
||||
|
||||
TREE_LIB_ENABLE=1
|
||||
lib=
|
||||
subdirs =
|
||||
|
||||
|
||||
all::
|
||||
make -C ${QTOP}/arch BP=${BP}
|
||||
make -C ${QTOP}/kernel BP=${BP}
|
||||
make -C ${QTOP}/osal BP=${BP}
|
||||
make -C ${QTOP}/net BP=${BP}
|
||||
make -C ${QTOP}/devices BP=${BP}
|
||||
exec =
|
||||
LD_A_FILES += $(LIBDIR)/libarch.a
|
||||
LD_A_FILES += $(LIBDIR)/libkernel.a
|
||||
LD_A_FILES += $(LIBDIR)/libini_demo.a
|
||||
LD_A_FILES += $(LIBDIR)/libcmsis_os.a
|
||||
LDFLAGS += -lpthread
|
||||
|
||||
include ${QTOP}/qmk/generic/Make.exec
|
||||
|
||||
|
||||
|
|
@ -1,236 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file lwipopts.h
|
||||
* @author MCD Application Team
|
||||
* @version V1.1.0
|
||||
* @date 31-July-2013
|
||||
* @brief lwIP Options Configuration.
|
||||
* This file is based on Utilities\lwip_v1.4.1\src\include\lwip\opt.h
|
||||
* and contains the lwIP configuration for the STM32F4x7 demonstration.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© COPYRIGHT 2013 STMicroelectronics</center></h2>
|
||||
*
|
||||
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
|
||||
* You may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.st.com/software_license_agreement_liberty_v2
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __LWIPOPTS_H__
|
||||
#define __LWIPOPTS_H__
|
||||
|
||||
/**
|
||||
* SYS_LIGHTWEIGHT_PROT==1: if you want inter-task protection for certain
|
||||
* critical regions during buffer allocation, deallocation and memory
|
||||
* allocation and deallocation.
|
||||
*/
|
||||
#define SYS_LIGHTWEIGHT_PROT 1
|
||||
|
||||
/**
|
||||
* NO_SYS==1: Provides VERY minimal functionality. Otherwise,
|
||||
* use lwIP facilities.
|
||||
*/
|
||||
#define NO_SYS 0
|
||||
|
||||
/**
|
||||
* NO_SYS_NO_TIMERS==1: Drop support for sys_timeout when NO_SYS==1
|
||||
* Mainly for compatibility to old versions.
|
||||
*/
|
||||
#define NO_SYS_NO_TIMERS 0
|
||||
|
||||
/* ---------- Memory options ---------- */
|
||||
/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which
|
||||
lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2
|
||||
byte alignment -> define MEM_ALIGNMENT to 2. */
|
||||
#define MEM_ALIGNMENT 4
|
||||
|
||||
/* MEM_SIZE: the size of the heap memory. If the application will send
|
||||
a lot of data that needs to be copied, this should be set high. */
|
||||
#define MEM_SIZE (5 * 1024)
|
||||
|
||||
/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application
|
||||
sends a lot of data out of ROM (or other static memory), this
|
||||
should be set high. */
|
||||
#define MEMP_NUM_PBUF 25
|
||||
/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
|
||||
per active UDP "connection". */
|
||||
#define MEMP_NUM_UDP_PCB 4
|
||||
/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP
|
||||
connections. */
|
||||
#define MEMP_NUM_TCP_PCB 6
|
||||
/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP
|
||||
connections. */
|
||||
#define MEMP_NUM_TCP_PCB_LISTEN 6
|
||||
/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
|
||||
segments. */
|
||||
#define MEMP_NUM_TCP_SEG 150
|
||||
/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
|
||||
timeouts. */
|
||||
#define MEMP_NUM_SYS_TIMEOUT 6
|
||||
|
||||
/* ---------- Pbuf options ---------- */
|
||||
/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */
|
||||
#define PBUF_POOL_SIZE 25
|
||||
/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
|
||||
#define PBUF_POOL_BUFSIZE LWIP_MEM_ALIGN_SIZE(TCP_MSS + 40 + PBUF_LINK_ENCAPSULATION_HLEN + PBUF_LINK_HLEN)
|
||||
|
||||
/* ---------- TCP options ---------- */
|
||||
#define LWIP_TCP 1
|
||||
#define TCP_TTL 255
|
||||
|
||||
/* Controls if TCP should queue segments that arrive out of
|
||||
order. Define to 0 if your device is low on memory. */
|
||||
#define TCP_QUEUE_OOSEQ 0
|
||||
|
||||
/* TCP Maximum segment size. */
|
||||
#define TCP_MSS (1500 - 40) /* TCP_MSS = (Ethernet MTU - IP header size - TCP header size) */
|
||||
|
||||
/* TCP sender buffer space (bytes). */
|
||||
#define TCP_SND_BUF (7 * TCP_MSS)
|
||||
|
||||
/* TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least
|
||||
as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. */
|
||||
|
||||
#define TCP_SND_QUEUELEN (8 * TCP_SND_BUF / TCP_MSS)
|
||||
|
||||
/* TCP receive window. */
|
||||
#define TCP_WND (9 * TCP_MSS)
|
||||
|
||||
/* ---------- ICMP options ---------- */
|
||||
#define LWIP_ICMP 1
|
||||
|
||||
/* ---------- DHCP options ---------- */
|
||||
/* Define LWIP_DHCP to 1 if you want DHCP configuration of
|
||||
interfaces. DHCP is not implemented in lwIP 0.5.1, however, so
|
||||
turning this on does currently not work. */
|
||||
#define LWIP_DHCP 1
|
||||
|
||||
/* ---------- UDP options ---------- */
|
||||
#define LWIP_UDP 1
|
||||
#define UDP_TTL 255
|
||||
|
||||
/* ---------- Statistics options ---------- */
|
||||
#define LWIP_STATS 0
|
||||
#define LWIP_PROVIDE_ERRNO 1
|
||||
|
||||
/* ---------- link callback options ---------- */
|
||||
/* LWIP_NETIF_LINK_CALLBACK==1: Support a callback function from an interface
|
||||
* whenever the link changes (i.e., link down)
|
||||
*/
|
||||
#define LWIP_NETIF_LINK_CALLBACK 0
|
||||
/*
|
||||
--------------------------------------
|
||||
---------- Checksum options ----------
|
||||
--------------------------------------
|
||||
*/
|
||||
|
||||
/*
|
||||
The STM32F4x7 allows computing and verifying the IP, UDP, TCP and ICMP checksums by hardware:
|
||||
- To use this feature let the following define uncommented.
|
||||
- To disable it and process by CPU comment the the checksum.
|
||||
*/
|
||||
#define CHECKSUM_BY_HARDWARE
|
||||
//#undef CHECKSUM_BY_HARDWARE
|
||||
|
||||
#ifdef CHECKSUM_BY_HARDWARE
|
||||
/* CHECKSUM_GEN_IP==0: Generate checksums by hardware for outgoing IP packets.*/
|
||||
#define CHECKSUM_GEN_IP 0
|
||||
/* CHECKSUM_GEN_UDP==0: Generate checksums by hardware for outgoing UDP packets.*/
|
||||
#define CHECKSUM_GEN_UDP 0
|
||||
/* CHECKSUM_GEN_TCP==0: Generate checksums by hardware for outgoing TCP packets.*/
|
||||
#define CHECKSUM_GEN_TCP 0
|
||||
/* CHECKSUM_CHECK_IP==0: Check checksums by hardware for incoming IP packets.*/
|
||||
#define CHECKSUM_CHECK_IP 0
|
||||
/* CHECKSUM_CHECK_UDP==0: Check checksums by hardware for incoming UDP packets.*/
|
||||
#define CHECKSUM_CHECK_UDP 0
|
||||
/* CHECKSUM_CHECK_TCP==0: Check checksums by hardware for incoming TCP packets.*/
|
||||
#define CHECKSUM_CHECK_TCP 0
|
||||
/* CHECKSUM_CHECK_ICMP==0: Check checksums by hardware for incoming ICMP packets.*/
|
||||
#define CHECKSUM_GEN_ICMP 0
|
||||
#else
|
||||
/* CHECKSUM_GEN_IP==1: Generate checksums in software for outgoing IP packets.*/
|
||||
#define CHECKSUM_GEN_IP 1
|
||||
/* CHECKSUM_GEN_UDP==1: Generate checksums in software for outgoing UDP packets.*/
|
||||
#define CHECKSUM_GEN_UDP 1
|
||||
/* CHECKSUM_GEN_TCP==1: Generate checksums in software for outgoing TCP packets.*/
|
||||
#define CHECKSUM_GEN_TCP 1
|
||||
/* CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets.*/
|
||||
#define CHECKSUM_CHECK_IP 1
|
||||
/* CHECKSUM_CHECK_UDP==1: Check checksums in software for incoming UDP packets.*/
|
||||
#define CHECKSUM_CHECK_UDP 1
|
||||
/* CHECKSUM_CHECK_TCP==1: Check checksums in software for incoming TCP packets.*/
|
||||
#define CHECKSUM_CHECK_TCP 1
|
||||
/* CHECKSUM_CHECK_ICMP==1: Check checksums by hardware for incoming ICMP packets.*/
|
||||
#define CHECKSUM_GEN_ICMP 1
|
||||
#endif
|
||||
|
||||
#define LWIP_TCPIP_CORE_LOCKING 1
|
||||
|
||||
/*
|
||||
----------------------------------------------
|
||||
---------- Sequential layer options ----------
|
||||
----------------------------------------------
|
||||
*/
|
||||
/**
|
||||
* LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c)
|
||||
*/
|
||||
#define LWIP_NETCONN 1
|
||||
|
||||
/*
|
||||
------------------------------------
|
||||
---------- Socket options ----------
|
||||
------------------------------------
|
||||
*/
|
||||
/**
|
||||
* LWIP_SOCKET==1: Enable Socket API (require to use sockets.c)
|
||||
*/
|
||||
#define LWIP_SOCKET 1
|
||||
|
||||
/*
|
||||
---------------------------------
|
||||
---------- OS options ----------
|
||||
---------------------------------
|
||||
*/
|
||||
|
||||
#define DEFAULT_UDP_RECVMBOX_SIZE 10
|
||||
#define DEFAULT_TCP_RECVMBOX_SIZE 10
|
||||
#define DEFAULT_ACCEPTMBOX_SIZE 10
|
||||
#define DEFAULT_THREAD_STACKSIZE 1024 * 2
|
||||
|
||||
#define TCPIP_THREAD_NAME "lwip"
|
||||
#define TCPIP_THREAD_STACKSIZE 1024
|
||||
#define TCPIP_MBOX_SIZE 10
|
||||
#define TCPIP_THREAD_PRIO 1
|
||||
|
||||
#define LWIP_DNS_API_DECLARE_STRUCTS 1
|
||||
#define LWIP_DNS 1
|
||||
|
||||
/** DNS server IP address */
|
||||
#ifndef DNS_SERVER_ADDRESS
|
||||
#define DNS_SERVER_ADDRESS(ipaddr) (ip4_addr_set_u32(ipaddr, ipaddr_addr("208.67.222.222"))) /* resolver1.opendns.com */
|
||||
#endif
|
||||
|
||||
/*
|
||||
----------------------------------------
|
||||
---------- Lwip Debug options ----------
|
||||
----------------------------------------
|
||||
*/
|
||||
#define LWIP_DEBUG 0
|
||||
|
||||
#define ethernet_with_mac 1
|
||||
|
||||
#endif /* __LWIPOPTS_H__ */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
#ifndef _TOS_CONFIG_H_
|
||||
#define _TOS_CONFIG_H_
|
||||
|
||||
#include "stddef.h"
|
||||
#include "stdint.h"
|
||||
|
||||
#define TOS_CFG_TASK_PRIO_MAX 10u // 配置 TencentOS tiny 默认支持的最大优先级数量
|
||||
|
||||
#define TOS_CFG_ROUND_ROBIN_EN 1u // 配置 TencentOS tiny 的内核是否开启时间片轮转
|
||||
|
||||
#define TOS_CFG_OBJECT_VERIFY_EN 1u // 配置 TencentOS tiny 是否校验指针合法
|
||||
|
||||
#define TOS_CFG_EVENT_EN 1u // TencentOS tiny 事件模块功能宏
|
||||
|
||||
#define TOS_CFG_MMHEAP_EN 1u // 配置 TencentOS tiny 是否开启动态内存模块
|
||||
|
||||
#define TOS_CFG_MMHEAP_POOL_SIZE 0x100 // 配置 TencentOS tiny 动态内存池大小
|
||||
|
||||
#define TOS_CFG_MMHEAP_DEFAULT_POOL_SIZE 0x100 // 配置 TencentOS tiny 动态内存池大小
|
||||
|
||||
#define TOS_CFG_MUTEX_EN 1u // 配置 TencentOS tiny 是否开启互斥锁模块
|
||||
|
||||
#define TOS_CFG_MESSAGE_QUEUE_EN 1u
|
||||
#define TOS_CFG_MAIL_QUEUE_EN 1u
|
||||
|
||||
#define TOS_CFG_PRIORITY_MESSAGE_QUEUE_EN 1u
|
||||
|
||||
#define TOS_CFG_PRIORITY_MAIL_QUEUE_EN 1u
|
||||
#define TOS_CFG_TIMER_EN 1u // 配置 TencentOS tiny 是否开启软件定时器模块
|
||||
|
||||
#define TOS_CFG_SEM_EN 1u // 配置 TencentOS tiny 是否开启信号量模块
|
||||
|
||||
#define TOS_CFG_MMBLK_EN 1u
|
||||
|
||||
#if (TOS_CFG_QUEUE_EN > 0u)
|
||||
#define TOS_CFG_MSG_EN 1u
|
||||
#else
|
||||
#define TOS_CFG_MSG_EN 0u
|
||||
#endif
|
||||
|
||||
#define TOS_CFG_MSG_POOL_SIZE 10u // 配置 TencentOS tiny 消息队列大小
|
||||
|
||||
#define TOS_CFG_IDLE_TASK_STK_SIZE 256u // 配置 TencentOS tiny 空闲任务栈大小
|
||||
|
||||
#define TOS_CFG_CPU_TICK_PER_SECOND 1000u // 配置 TencentOS tiny 的 tick 频率
|
||||
|
||||
#define TOS_CFG_CPU_CLOCK 1000000u // 配置 TencentOS tiny CPU 频率
|
||||
|
||||
#define TOS_CFG_TIMER_AS_PROC 1u // 配置是否将 TIMER 配置成函数模式
|
||||
|
||||
#endif
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
# How to run the demo in linux
|
||||
|
||||
## step1
|
||||
|
||||
make sure your develop environment.
|
||||
|
||||
- `cmake` and version greater than 3.8.2
|
||||
- `gcc` `gdb` `make` is installed
|
||||
|
||||
## step2
|
||||
|
||||
make `build` directory and compile in `build`
|
||||
|
||||
```bash
|
||||
mkdir build && cd build
|
||||
cmake ..
|
||||
make
|
||||
```
|
||||
|
||||
## step3
|
||||
|
||||
run program !!
|
||||
|
||||
```bash
|
||||
# in build directory
|
||||
./inidemo
|
||||
```
|
||||
|
||||
## other
|
||||
|
||||
you can copy this demo to other path, but if you want do it,
|
||||
you need modify `CMakeLists.txt`. find line
|
||||
|
||||
```cmake
|
||||
set(TINY_ROOT ../../../)
|
||||
```
|
||||
|
||||
and modify `path-to-tinyos`
|
||||
|
||||
```cmake
|
||||
set(TINY_ROOT path-to-tinyos)
|
||||
```
|
||||
|
|
@ -1,170 +0,0 @@
|
|||
#include "cmsis_os.h"
|
||||
#include "iniparser.h"
|
||||
#define CONFIG_NAME "Config.ini"
|
||||
|
||||
struct DataInfo_t
|
||||
{
|
||||
int InitData;
|
||||
int VolumeData;
|
||||
int LanguageVersion;
|
||||
};
|
||||
|
||||
#define TASK1_STK_SIZE 512
|
||||
void task1(void *arg);
|
||||
osThreadDef(task1, osPriorityNormal, 1, TASK1_STK_SIZE);
|
||||
|
||||
void task1(void *arg)
|
||||
{
|
||||
int Len = -1;
|
||||
int Ret = -1;
|
||||
char Buf[128];
|
||||
char *DataPtr = NULL;
|
||||
struct DataInfo_t Data;
|
||||
FILE *IniTest = NULL ;
|
||||
FILE *DefaultIni = NULL;
|
||||
dictionary *ConfigIni = NULL;
|
||||
|
||||
/*1. Create ini config file*/
|
||||
IniTest = fopen(CONFIG_NAME, "w");
|
||||
if(NULL == IniTest)
|
||||
{
|
||||
printf("IniTest is Null!\n");
|
||||
return ;
|
||||
}
|
||||
|
||||
fprintf(IniTest,
|
||||
"[Setting]\n"
|
||||
"init_data=0;\n"
|
||||
"volume_data=1;\n"
|
||||
"language_version=1;\n"
|
||||
);
|
||||
|
||||
Ret = fclose(IniTest);
|
||||
if(Ret != 0)
|
||||
{
|
||||
printf("close IniTest fail!\n");
|
||||
return ;
|
||||
}
|
||||
|
||||
IniTest = NULL;
|
||||
|
||||
IniTest = fopen(CONFIG_NAME, "r");
|
||||
if(NULL == IniTest)
|
||||
{
|
||||
printf("IniTest is Null!\n");
|
||||
return ;
|
||||
}
|
||||
|
||||
memset(Buf, 0, sizeof(Buf));
|
||||
while(fgets(Buf, sizeof(Buf), IniTest))
|
||||
{
|
||||
printf("Buf: %s", Buf);
|
||||
}
|
||||
|
||||
fclose(IniTest);
|
||||
IniTest = NULL;
|
||||
|
||||
putchar('\n');
|
||||
|
||||
/*2. Test read ini config file data*/
|
||||
ConfigIni = iniparser_load(CONFIG_NAME);
|
||||
if(NULL == ConfigIni)
|
||||
{
|
||||
printf("ConfigIni is NULL!\n");
|
||||
return ;
|
||||
}
|
||||
|
||||
//iniparser_dump(ConfigIni, stderr);
|
||||
Data.InitData = iniparser_getint(ConfigIni,"Setting:init_data",-1);
|
||||
if(-1 == Data.InitData)
|
||||
{
|
||||
printf("iniparser_getint fail!\n");
|
||||
return ;
|
||||
}
|
||||
Data.VolumeData = iniparser_getint(ConfigIni,"Setting:volume_data",-1);
|
||||
if(-1 == Data.VolumeData)
|
||||
{
|
||||
printf("iniparser_getint fail!\n");
|
||||
return ;
|
||||
}
|
||||
Data.LanguageVersion = iniparser_getint(ConfigIni,"Setting:language_version",-1);
|
||||
if(-1 == Data.LanguageVersion)
|
||||
{
|
||||
printf("iniparser_getint fail!\n");
|
||||
return ;
|
||||
}
|
||||
|
||||
printf("Data.InitData:%d\n", Data.InitData);
|
||||
printf("Data.VolumeData:%d\n", Data.VolumeData);
|
||||
printf("Data.LanguageVersion:%d\n", Data.LanguageVersion);
|
||||
|
||||
/* 3. Set modify one of the parameters*/
|
||||
iniparser_set(ConfigIni,"Setting:init_data", "111");
|
||||
iniparser_set(ConfigIni,"Setting:volume_data", "222");
|
||||
iniparser_set(ConfigIni,"Setting:language_version", "333");
|
||||
|
||||
putchar('\n');
|
||||
|
||||
/*4. Write data to int config file*/
|
||||
DefaultIni = fopen(CONFIG_NAME, "w");
|
||||
if(NULL == DefaultIni)
|
||||
{
|
||||
printf("DefaultIni is NULL!\n");
|
||||
return ;
|
||||
}
|
||||
iniparser_dump_ini(ConfigIni, DefaultIni);
|
||||
Ret = fclose(DefaultIni);
|
||||
if(Ret != 0)
|
||||
{
|
||||
printf("close DefaultIni fail!\n");
|
||||
return ;
|
||||
}
|
||||
|
||||
/*5.Read the modified Config ini file data*/
|
||||
Data.InitData = iniparser_getint(ConfigIni, "Setting:init_data", -1);
|
||||
if(-1 == Data.InitData)
|
||||
{
|
||||
printf("iniparser_getint fail!\n");
|
||||
return ;
|
||||
}
|
||||
Data.VolumeData = iniparser_getint(ConfigIni, "Setting:volume_data", -1);
|
||||
if(-1 == Data.VolumeData)
|
||||
{
|
||||
printf("iniparser_getint fail!\n");
|
||||
return ;
|
||||
}
|
||||
Data.LanguageVersion = iniparser_getint(ConfigIni, "Setting:language_version", -1);
|
||||
if(-1 == Data.LanguageVersion)
|
||||
{
|
||||
printf("iniparser_getint fail!\n");
|
||||
return ;
|
||||
}
|
||||
|
||||
printf("Data.InitData:%d\n", Data.InitData);
|
||||
printf("Data.VolumeData:%d\n", Data.VolumeData);
|
||||
printf("Data.LanguageVersion:%d\n", Data.LanguageVersion);
|
||||
|
||||
iniparser_freedict(ConfigIni);
|
||||
|
||||
while(1)
|
||||
{
|
||||
printf("Ini test success!\n");
|
||||
osDelay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
void application_entry(void *arg)
|
||||
{
|
||||
osThreadCreate(osThread(task1), NULL); // Create task1
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
osKernelInitialize(); //TOS Tiny kernel initialize
|
||||
application_entry(NULL);
|
||||
osKernelStart(); //Start TOS Tiny
|
||||
|
||||
while (1)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -1,86 +0,0 @@
|
|||
cmake_minimum_required(VERSION 3.8)
|
||||
|
||||
project(mqtt_demo)
|
||||
|
||||
set(CMAKE_BUILD_TYPE "Debug")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
|
||||
|
||||
set(TINY_ROOT ../../../)
|
||||
|
||||
add_definitions(-DMQTT_NETWORK_TYPE_NO_TLS -DMQTT_NETSOCKET_USING_AT)
|
||||
|
||||
## kernel
|
||||
include_directories(${TINY_ROOT}/osal/cmsis_os)
|
||||
include_directories(${TINY_ROOT}/kernel/core/include)
|
||||
include_directories(${TINY_ROOT}/kernel/evtdrv/include)
|
||||
include_directories(${TINY_ROOT}/kernel/hal/include)
|
||||
include_directories(${TINY_ROOT}/kernel/pm/include)
|
||||
|
||||
set(CMSIS_SRCS ${TINY_ROOT}/osal/cmsis_os/cmsis_os.c)
|
||||
aux_source_directory(${TINY_ROOT}/kernel/core CORE_SRCS)
|
||||
aux_source_directory(${TINY_ROOT}/kernel/evtdrv EVTDRV_SRCS)
|
||||
aux_source_directory(${TINY_ROOT}/kernel/pm PM_SRCS)
|
||||
|
||||
set(KERNEL_SRCS ${CMSIS_SRCS} ${EVTDRV_SRCS} ${PM_SRCS} ${CORE_SRCS})
|
||||
|
||||
## net
|
||||
include_directories(${TINY_ROOT}/net/sal_module_wrapper)
|
||||
include_directories(${TINY_ROOT}/components/connectivity/mqttclient/mqttclient)
|
||||
|
||||
aux_source_directory(${TINY_ROOT}/net/sal_module_wrapper SAL_SRCS)
|
||||
|
||||
set(MQTT_ROOT ${TINY_ROOT}/components/connectivity/mqttclient)
|
||||
include_directories(${MQTT_ROOT}/common)
|
||||
include_directories(${MQTT_ROOT}/common/log)
|
||||
include_directories(${MQTT_ROOT}/mqtt)
|
||||
include_directories(${MQTT_ROOT}/mqttclient)
|
||||
include_directories(${MQTT_ROOT}/network)
|
||||
include_directories(${MQTT_ROOT}/platform/TencentOS-tiny)
|
||||
|
||||
aux_source_directory(${MQTT_ROOT}/common MQTT_COMMON)
|
||||
aux_source_directory(${MQTT_ROOT}/common/log MQTT_COMMON_LOG)
|
||||
aux_source_directory(${MQTT_ROOT}/mqttclient MQTT_CLIENT)
|
||||
aux_source_directory(${MQTT_ROOT}/mqtt MQTT_CORE)
|
||||
aux_source_directory(${MQTT_ROOT}/network MQTT_NETWORK)
|
||||
aux_source_directory(${MQTT_ROOT}/platform/TencentOS-tiny MQTT_PLATFORM)
|
||||
|
||||
set(MQTT_SRCS
|
||||
${MQTT_ROOT}/common/log/arch/tencentos-tiny/arch.c
|
||||
${MQTT_COMMON}
|
||||
${MQTT_COMMON_LOG}
|
||||
${MQTT_CLIENT}
|
||||
${MQTT_CORE}
|
||||
${MQTT_NETWORK}
|
||||
${MQTT_PLATFORM}
|
||||
)
|
||||
|
||||
set(NET_SRCS ${MQTT_SRCS} ${SAL_SRCS})
|
||||
|
||||
## arch
|
||||
set(ARCH_ROOT ${TINY_ROOT}/arch/linux)
|
||||
|
||||
include_directories(${ARCH_ROOT}/common/include)
|
||||
include_directories(${ARCH_ROOT}/posix/gcc)
|
||||
|
||||
aux_source_directory(${ARCH_ROOT}/common ARCH_COMMON_SRCS)
|
||||
aux_source_directory(${ARCH_ROOT}/posix/gcc ARCH_POSIX_SRCS)
|
||||
|
||||
set(ARCH_SRCS ${ARCH_COMMON_SRCS} ${ARCH_POSIX_SRCS})
|
||||
|
||||
|
||||
include_directories(${TINY_ROOT}/components/utils/JSON/include)
|
||||
|
||||
set(UTILS_SRCS ${TINY_ROOT}/components/utils/JSON/src/cJSON.c)
|
||||
|
||||
set(TINY_SRCS ${ARCH_SRCS} ${KERNEL_SRCS} ${NET_SRCS} ${UTILS_SRCS})
|
||||
|
||||
## app
|
||||
include_directories(./)
|
||||
include_directories(./inc)
|
||||
|
||||
aux_source_directory(./src APP_SRCS)
|
||||
|
||||
add_executable(mqtt_demo ${APP_SRCS} ${TINY_SRCS})
|
||||
|
||||
target_link_libraries(mqtt_demo pthread)
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
###################################################################
|
||||
#automatic detection QTOP and LOCALDIR
|
||||
CUR_DIR := $(patsubst %/,%,$(dir $(realpath $(firstword $(MAKEFILE_LIST)))))
|
||||
TRYQTOP := $(shell if [ -n "$$QTOP" ] ; then\
|
||||
echo $$QTOP;\
|
||||
else\
|
||||
cd $(CUR_DIR); while /usr/bin/test ! -e qmk ; do \
|
||||
dir=`cd ../;pwd`; \
|
||||
if [ "$$dir" = "/" ] ; then \
|
||||
echo Cannot find QTOP in $(firstword $(MAKEFILE_LIST)) 1>&2; \
|
||||
exit 1; \
|
||||
fi ; \
|
||||
cd $$dir; \
|
||||
done ; \
|
||||
pwd; \
|
||||
fi)
|
||||
QTOP ?= $(realpath ${TRYQTOP})
|
||||
|
||||
ifeq ($(QTOP),)
|
||||
$(error Please run this in a tree)
|
||||
endif
|
||||
LOCALDIR = $(patsubst %/,%,$(subst $(realpath $(QTOP))/,,$(CUR_DIR)))
|
||||
export QTOP
|
||||
|
||||
####################################################################
|
||||
|
||||
|
||||
export BP=Linux_Posix
|
||||
|
||||
TREE_LIB_ENABLE=1
|
||||
lib=
|
||||
subdirs =
|
||||
|
||||
CFGFLAGS += -I$(CUR_DIR)/inc
|
||||
CFGFLAGS += -I$(QTOP)/net/sal_module_wrapper
|
||||
CFGFLAGS += -I$(QTOP)/components/connectivity/Eclipse-Paho-MQTT/wrapper/include
|
||||
CFGFLAGS += -I$(QTOP)/components/connectivity/Eclipse-Paho-MQTT/3rdparty/include
|
||||
|
||||
all::
|
||||
make -C ${QTOP}/arch BP=Linux_Posix
|
||||
make -C ${QTOP}/kernel
|
||||
make -C ${QTOP}/osal
|
||||
make -C ${QTOP}/net
|
||||
make -C ${QTOP}/devices
|
||||
make -C ${QTOP}/components/connectivity/Eclipse-Paho-MQTT
|
||||
|
||||
exec =
|
||||
LD_A_FILES += $(LIBDIR)/libarch.a
|
||||
LD_A_FILES += $(LIBDIR)/libkernel.a
|
||||
LD_A_FILES += $(LIBDIR)/libhello_world.a
|
||||
LD_A_FILES += $(LIBDIR)/libcmsis_os.a
|
||||
LD_A_FILES += $(LIBDIR)/libEclipse-Paho-MQTT.a
|
||||
LD_A_FILES += $(LIBDIR)/libsal_module_wrapper.a
|
||||
LDFLAGS += -lpthread
|
||||
|
||||
include ${QTOP}/qmk/generic/Make.exec
|
||||
|
||||
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
#ifndef TOS_MQTT_CONFIG_H
|
||||
#define TOS_MQTT_CONFIG_H
|
||||
|
||||
#define MQTT_SERVER_IP "111.230.189.156"
|
||||
#define MQTT_SERVER_PORT "1883"
|
||||
#define MQTT_PRODUCT_ID "$product"
|
||||
#define MQTT_DEV_NAME "$dev"
|
||||
#define MQTT_CLIENT_ID "$product$dev"
|
||||
#define MQTT_USR_NAME "$product$dev;21010406;12365;4294967295"
|
||||
#define MQTT_PASSWORD "$sign;hmacsha1"
|
||||
#define MQTT_SUBSCRIBE_TOPIC "$product/$dev/$sub"
|
||||
#define MQTT_PUBLISH_TOPIC "$product/$dev/$pub"
|
||||
|
||||
//#error please replace yourself server configuration
|
||||
/**
|
||||
* 1. run python tool
|
||||
* ```
|
||||
* cd tiny/tools/
|
||||
* python3 mqtt_config_gen.py
|
||||
* ```
|
||||
* then input your server information
|
||||
*
|
||||
* 2. tool will generate `mqtt_config.h` file, copy to replace this file
|
||||
*/
|
||||
|
||||
#endif
|
||||
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
#ifndef _SOCKET_WRAPPER_
|
||||
#define _SOCKET_WRAPPER_
|
||||
|
||||
#include "sal_module_wrapper.h"
|
||||
|
||||
sal_module_t *get_socket_module(void);
|
||||
|
||||
#endif //_SOCKET_WRAPPER_
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
#ifndef _TOS_CONFIG_H_
|
||||
#define _TOS_CONFIG_H_
|
||||
|
||||
#include "stddef.h"
|
||||
|
||||
#define TOS_CFG_TASK_PRIO_MAX 10u // 配置 TencentOS tiny 默认支持的最大优先级数量
|
||||
|
||||
#define TOS_CFG_ROUND_ROBIN_EN 1u // 配置 TencentOS tiny 的内核是否开启时间片轮转
|
||||
|
||||
#define TOS_CFG_OBJECT_VERIFY 0u // 配置 TencentOS tiny 是否校验指针合法
|
||||
|
||||
#define TOS_CFG_EVENT_EN 1u // TencentOS tiny 事件模块功能宏
|
||||
|
||||
#define TOS_CFG_MMHEAP_EN 1u // 配置 TencentOS tiny 是否开启动态内存模块
|
||||
|
||||
#define TOS_CFG_MMHEAP_POOL_SIZE 0x100 // 配置 TencentOS tiny 动态内存池大小
|
||||
|
||||
#define TOS_CFG_MMHEAP_DEFAULT_POOL_SIZE 0x100 // 配置 TencentOS tiny 动态内存池大小
|
||||
|
||||
#define TOS_CFG_MUTEX_EN 1u // 配置 TencentOS tiny 是否开启互斥锁模块
|
||||
|
||||
#define TOS_CFG_QUEUE_EN 1u // 配置 TencentOS tiny 是否开启队列模块
|
||||
|
||||
#define TOS_CFG_TIMER_EN 1u // 配置 TencentOS tiny 是否开启软件定时器模块
|
||||
|
||||
#define TOS_CFG_SEM_EN 1u // 配置 TencentOS tiny 是否开启信号量模块
|
||||
|
||||
#define TOS_CFG_MMBLK_EN 1u
|
||||
|
||||
#if (TOS_CFG_QUEUE_EN > 0u)
|
||||
#define TOS_CFG_MSG_EN 1u
|
||||
#else
|
||||
#define TOS_CFG_MSG_EN 0u
|
||||
#endif
|
||||
|
||||
#define TOS_CFG_MSG_POOL_SIZE 10u // 配置 TencentOS tiny 消息队列大小
|
||||
|
||||
#define TOS_CFG_IDLE_TASK_STK_SIZE 256u // 配置 TencentOS tiny 空闲任务栈大小
|
||||
|
||||
#define TOS_CFG_CPU_TICK_PER_SECOND 1000u // 配置 TencentOS tiny 的 tick 频率
|
||||
|
||||
#define TOS_CFG_CPU_CLOCK 1000000u // 配置 TencentOS tiny CPU 频率
|
||||
|
||||
#define TOS_CFG_TIMER_AS_PROC 1u // 配置是否将 TIMER 配置成函数模式
|
||||
|
||||
#endif
|
||||
|
|
@ -1,91 +0,0 @@
|
|||
# How to run the demo in linux
|
||||
|
||||
## step1
|
||||
|
||||
make sure your develop environment.
|
||||
|
||||
- `cmake` and version greater than 3.8.2
|
||||
- `gcc` `gdb` `make` is installed
|
||||
|
||||
## step2
|
||||
|
||||
configure your server and add a transmit rule
|
||||
|
||||
reference [tencent cloud IoT guide?](../../../doc/8.TencentOS-tiny对接腾讯云IoTHub开发指南.md)
|
||||
|
||||
additional thing, add a rule for send a message to the demo
|
||||
|
||||
1. select filter topic is the ${demo device}/event and
|
||||
SELECT \* FROM ${demo device}/event
|
||||
2. select action type is Republish and topic is the ${demo device}/control
|
||||
|
||||
the page like this
|
||||
|
||||
---
|
||||
|
||||
|规则引擎
|
||||
|--------------------------------------------
|
||||
|基本信息
|
||||
|规则名称 loop
|
||||
|规则描述 未填写
|
||||
|--------------------------------------------
|
||||
|筛选数据
|
||||
|字段 _
|
||||
|Topic ${demo device}/event
|
||||
|条件
|
||||
|当前 SQL 语句是:
|
||||
|SELECT _ ${demo device}/event
|
||||
|--------------------------------------------
|
||||
|行为操作
|
||||
|行为类型 数据转发到另一个 Topic ( Republish )
|
||||
|Topic ${demo device}/control
|
||||
| ...
|
||||
|
||||
---
|
||||
|
||||
## step3
|
||||
|
||||
generate `mqtt_config.h` file to replace `./inc/mqtt_config.h`
|
||||
|
||||
cd `tiny/tools/` directory, run python script
|
||||
|
||||
```bash
|
||||
python3 mqtt_config_gen.py
|
||||
```
|
||||
|
||||
then input your server configuration, generate `mqtt_config.h` file
|
||||
copy to `./inc/` replace old file
|
||||
|
||||
## step4
|
||||
|
||||
make `build` directory and compile in `build`
|
||||
|
||||
```bash
|
||||
mkdir build && cd build
|
||||
cmake ..
|
||||
make
|
||||
```
|
||||
|
||||
## step5
|
||||
|
||||
run program !!
|
||||
|
||||
```bash
|
||||
# in build directory
|
||||
./mqtt_demo
|
||||
```
|
||||
|
||||
## other
|
||||
|
||||
you can copy this demo to other path, but if you want do it,
|
||||
you need modify `CMakeLists.txt`. find line
|
||||
|
||||
```cmake
|
||||
set(TINY_ROOT ../../../)
|
||||
```
|
||||
|
||||
and modify `path-to-tinyos`
|
||||
|
||||
```cmake
|
||||
set(TINY_ROOT path-to-tinyos)
|
||||
```
|
||||
|
|
@ -1,94 +0,0 @@
|
|||
#include "cmsis_os.h"
|
||||
#include "socket_wrapper.h"
|
||||
#include "sal_module_wrapper.h"
|
||||
// #include "mqtt_wrapper.h"
|
||||
#include "mqtt_config.h"
|
||||
#include "mqttclient.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int sock_id = 0;
|
||||
|
||||
//mqtt_publisher
|
||||
#define MQTT_PUBLISHER_STK_SIZE 1024
|
||||
void mqtt_publisher(void *pdata);
|
||||
osThreadDef(mqtt_publisher, osPriorityNormal, 1, MQTT_PUBLISHER_STK_SIZE);
|
||||
|
||||
static void tos_topic_handler(void* client, message_data_t* msg)
|
||||
{
|
||||
(void)client;
|
||||
MQTT_LOG_I("-----------------------------------------------------------------------------------");
|
||||
MQTT_LOG_I("%s:%d %s()...\ntopic: %s, qos: %d. \nmessage:\n\t%s\n", __FILE__, __LINE__, __FUNCTION__,
|
||||
msg->topic_name, msg->message->qos, (char *)msg->message->payload);
|
||||
MQTT_LOG_I("-----------------------------------------------------------------------------------\n");
|
||||
}
|
||||
|
||||
void mqtt_publisher(void *pdata)
|
||||
{
|
||||
int error;
|
||||
char buf[100] = {0};
|
||||
mqtt_client_t *client = NULL;
|
||||
mqtt_message_t msg;
|
||||
|
||||
memset(&msg, 0, sizeof(msg));
|
||||
|
||||
mqtt_log_init();
|
||||
client = mqtt_lease();
|
||||
|
||||
mqtt_set_port(client, MQTT_SERVER_PORT);
|
||||
mqtt_set_host(client, MQTT_SERVER_IP);
|
||||
mqtt_set_client_id(client, MQTT_CLIENT_ID);
|
||||
mqtt_set_user_name(client, MQTT_USR_NAME);
|
||||
mqtt_set_password(client, MQTT_PASSWORD);
|
||||
mqtt_set_clean_session(client, 1);
|
||||
|
||||
error = mqtt_connect(client);
|
||||
|
||||
MQTT_LOG_D("mqtt connect error is %#x", error);
|
||||
|
||||
mqtt_subscribe(client, MQTT_SUBSCRIBE_TOPIC, QOS0, tos_topic_handler);
|
||||
|
||||
MQTT_LOG_D("mqtt subscribe error is %#x", error);
|
||||
|
||||
memset(&msg, 0, sizeof(msg));
|
||||
|
||||
for (;;)
|
||||
{
|
||||
sprintf(buf, "welcome to mqttclient, this is a publish test, a rand number: %d ...", random_number());
|
||||
|
||||
msg.qos = QOS0;
|
||||
msg.payload = (void *)buf;
|
||||
|
||||
error = mqtt_publish(client, MQTT_PUBLISH_TOPIC, &msg);
|
||||
|
||||
osDelay(4000);
|
||||
}
|
||||
}
|
||||
|
||||
// void mqtt_reciever(void *pdata)
|
||||
// {
|
||||
// uint8_t read_data[100];
|
||||
// int8_t topic[30];
|
||||
// uint32_t read_len;
|
||||
|
||||
// for (;;)
|
||||
// {
|
||||
// read_len = tos_mqtt_receive(topic, sizeof(topic), read_data, sizeof(read_data));
|
||||
// if (read_len >= 0)
|
||||
// {
|
||||
// printf("receive topic-->%s| data-->%s| \n", topic, read_data);
|
||||
// }
|
||||
// osDelay(100);
|
||||
// }
|
||||
// }
|
||||
|
||||
int main(void)
|
||||
{
|
||||
osKernelInitialize(); //TOS Tiny kernel initialize
|
||||
osThreadCreate(osThread(mqtt_publisher), NULL); // start connect and publish
|
||||
osKernelStart(); //Start TOS Tiny
|
||||
|
||||
while (1)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -1,143 +0,0 @@
|
|||
#include "socket_wrapper.h"
|
||||
#include "cmsis_os.h"
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <signal.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
static osMutexId socket_send_lock, socket_recv_lock;
|
||||
|
||||
osMutexDef(socket_send_lock);
|
||||
osMutexDef(socket_recv_lock);
|
||||
|
||||
static osSemaphoreId socket_recv_event;
|
||||
osSemaphoreDef(socket_recv_event);
|
||||
|
||||
int socket_init(void)
|
||||
{
|
||||
socket_send_lock = osMutexCreate(osMutex(socket_send_lock));
|
||||
socket_recv_lock = osMutexCreate(osMutex(socket_recv_lock));
|
||||
socket_recv_event = osSemaphoreCreate(osSemaphore(socket_recv_event),0);
|
||||
|
||||
return (
|
||||
(socket_recv_event != NULL) &&
|
||||
(socket_recv_lock != NULL) &&
|
||||
(socket_send_lock != NULL)
|
||||
);
|
||||
}
|
||||
|
||||
void io_signal_handle(int signal)
|
||||
{
|
||||
osSemaphoreRelease(socket_recv_event);
|
||||
}
|
||||
|
||||
int socket_connect(const char *ip, const char *port, sal_proto_t proto)
|
||||
{
|
||||
struct sockaddr_in addr = {
|
||||
.sin_family = AF_INET,
|
||||
.sin_port = htons(atoi(port))};
|
||||
int socket_proto = 0;
|
||||
struct sigaction sig_install;
|
||||
|
||||
inet_pton(AF_INET, ip, &addr.sin_addr);
|
||||
|
||||
if (TOS_SAL_PROTO_TCP == proto)
|
||||
{
|
||||
socket_proto = IPPROTO_TCP;
|
||||
}
|
||||
else if (TOS_SAL_PROTO_UDP == proto)
|
||||
{
|
||||
socket_proto = IPPROTO_UDP;
|
||||
}
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
int socket_id = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
||||
|
||||
fcntl( socket_id, __F_SETOWN, getpid() );
|
||||
fcntl( socket_id, __F_SETSIG, SIGIO );
|
||||
fcntl( socket_id, F_SETFL, O_ASYNC );
|
||||
|
||||
sig_install.sa_flags = 0;
|
||||
sig_install.sa_handler = io_signal_handle;
|
||||
sigfillset( &sig_install.sa_mask );
|
||||
|
||||
if ( 0 != sigaction( SIGIO, &sig_install, NULL ) )
|
||||
{
|
||||
printf( "socket problem installing %d\n",SIGIO );
|
||||
}
|
||||
|
||||
connect(socket_id, &addr, sizeof(addr));
|
||||
return socket_id;
|
||||
}
|
||||
|
||||
int socket_send(int sock, const void *buf, size_t len)
|
||||
{
|
||||
ssize_t send_len = 0, state;
|
||||
if (sock < 0)
|
||||
return -1;
|
||||
osMutexWait(socket_send_lock, TOS_TIME_FOREVER);
|
||||
do
|
||||
{
|
||||
state = send(sock, (buf + send_len), (len - send_len), MSG_DONTWAIT);
|
||||
if (state > 0)
|
||||
{
|
||||
send_len += state;
|
||||
}
|
||||
if (send_len != len)
|
||||
{
|
||||
osSemaphoreWait(socket_recv_event,100);
|
||||
}
|
||||
} while (len != send_len);
|
||||
osMutexRelease(socket_send_lock);
|
||||
return send_len;
|
||||
}
|
||||
|
||||
int socket_recv(int sock, void *buf, size_t len)
|
||||
{
|
||||
ssize_t recv_len = 0, state;
|
||||
if (sock < 0)
|
||||
return -1;
|
||||
osMutexWait(socket_recv_lock, TOS_TIME_FOREVER);
|
||||
do
|
||||
{
|
||||
state = recv(sock, (buf + recv_len), (len - recv_len), MSG_DONTWAIT);
|
||||
if (state > 0)
|
||||
{
|
||||
recv_len += state;
|
||||
}
|
||||
if (recv_len != len)
|
||||
{
|
||||
osSemaphoreWait(socket_recv_event,100);
|
||||
}
|
||||
} while (len != recv_len);
|
||||
osMutexRelease(socket_recv_lock);
|
||||
return recv_len;
|
||||
}
|
||||
|
||||
int socket_close(int sock)
|
||||
{
|
||||
close(sock);
|
||||
}
|
||||
|
||||
static sal_module_t linux_sal = {
|
||||
.init = socket_init,
|
||||
.connect = socket_connect,
|
||||
.send = socket_send,
|
||||
.recv = socket_recv,
|
||||
.close = socket_close,
|
||||
// .sendto = NULL,
|
||||
// .recv_timeout = NULL,
|
||||
// .recvfrom = NULL,
|
||||
// .recvfrom_timeout = NULL,
|
||||
// .parse_domain = NULL,
|
||||
};
|
||||
|
||||
sal_module_t *get_socket_module(void)
|
||||
{
|
||||
return (&linux_sal);
|
||||
}
|
||||
|
|
@ -62,25 +62,6 @@
|
|||
<tool id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.c.compiler.1731377187" name="GNU RISC-V Cross C Compiler" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.c.compiler">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.include.paths.1567947810" name="Include paths (-I)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.include.paths" useByScannerDiscovery="true" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/Debug}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/c-sdk/include}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/c-sdk/include/common}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/c-sdk/include/config}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/c-sdk/include/services/common}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/c-sdk/include/services/explorer}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/c-sdk/common/cryptology/inc}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/c-sdk/common/mqtt_packet/inc}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/c-sdk/common/utils/inc}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/c-sdk/examples}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/c-sdk/platform/network/inc}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/c-sdk/services/explorer/data_template/inc}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/c-sdk/services/explorer/service_mqtt/inc}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/c-sdk/services/common/log_upload/inc}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/c-sdk/services/common/mqtt_client/inc}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/net/sal_module_wrapper}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/devices/esp8266}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/fs/kv/include}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/fs/fatfs/include}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/fs/vfs/include}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/kernel/hal/include}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/net/at/include}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/net/tencent_firmware_module_wrapper}""/>
|
||||
|
|
@ -89,6 +70,7 @@
|
|||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/arch/common/include}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/arch/rv32i/gcc}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/kernel/core/include}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/kernel/hal/include}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/Core}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/User}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/Peripheral/inc}""/>
|
||||
|
|
@ -109,7 +91,6 @@
|
|||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.usenewlibnosys.351964161" name="Do not use syscalls (--specs=nosys.specs)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.usenewlibnosys" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.otherobjs.16994550" name="Other objects" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.otherobjs" useByScannerDiscovery="false" valueType="userObjs"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.flags.1125808200" name="Linker flags (-Xlinker [option])" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.flags" useByScannerDiscovery="false" valueType="stringList"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.libs.834465884" name="Libraries (-l)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.libs" useByScannerDiscovery="false" valueType="libs"/>
|
||||
<inputType id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.c.linker.input.1859223768" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.c.linker.input">
|
||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||
|
|
@ -142,27 +123,17 @@
|
|||
</toolChain>
|
||||
</folderInfo>
|
||||
<sourceEntries>
|
||||
<entry excluding="examples/qcloud_csdk_iot_explorer|c-sdk/services/common|c-sdk/include|examples/mqtt_iot_explorer.c|c-sdk/examples|c-sdk/app|c-sdk/services/explorer|c-sdk/explorer|c-sdk/platform|devices/esp8266|c-sdk/common|net/sal_module_wrapper|examples/fatfs_through_vfs_sample.c|User/mqtt_iot_explorer.c|examples/kv_sample.c|fs/fatfs|fs/vfs|fs/kv|components/kv|platform/hal/wch/ch32v30xx|kernel/hal|devices/esp8266_tencent_firmware|net/tencent_firmware_module_wrapper|kernel/core|net/at|kernel|arch|TencentOS-Tiny|Startup|Peripheral|Ld|Debug|Core" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||
<entry excluding="platform/hal/wch/ch32v30xx|kernel/hal|devices/esp8266_tencent_firmware|net/tencent_firmware_module_wrapper|kernel/core|net/at|kernel|arch|TencentOS-Tiny|Startup|Peripheral|Ld|Debug|Core" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Core"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Debug"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Ld"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Peripheral"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Startup"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="arch"/>
|
||||
<entry excluding="utils/test|mqtt_packet/test|cryptology/test" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="c-sdk/common"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="c-sdk/include"/>
|
||||
<entry excluding="os/Linux" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="c-sdk/platform"/>
|
||||
<entry excluding="system/test|system/sample|ota/test|ota/sample|mqtt_client/test|mqtt_client/sample|log_upload/test|log_upload/sample|cos/sample|dynreg/test|dynreg/sample|dynreg/src/dynreg.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="c-sdk/services/common"/>
|
||||
<entry excluding="service_mqtt/test|service_mqtt/sample|data_template/test|data_template/sample" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="c-sdk/services/explorer"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="devices/esp8266"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="devices/esp8266_tencent_firmware"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="fs/fatfs"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="fs/kv"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="fs/vfs"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="kernel/core"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="kernel/hal"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="net/at"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="net/sal_module_wrapper"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="net/tencent_firmware_module_wrapper"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="platform/hal/wch/ch32v30xx"/>
|
||||
</sourceEntries>
|
||||
|
|
|
|||
|
|
@ -1,61 +1,61 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="ilg.gnumcueclipse.debug.gdbjtag.openocd.launchConfigurationType">
|
||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doContinue" value="true" />
|
||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doDebugInRam" value="false" />
|
||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doFirstReset" value="true" />
|
||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doGdbServerAllocateConsole" value="true" />
|
||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doGdbServerAllocateTelnetConsole" value="false" />
|
||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doSecondReset" value="true" />
|
||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doStartGdbCLient" value="true" />
|
||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doStartGdbServer" value="true" />
|
||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.enableSemihosting" value="false" />
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.firstResetType" value="init" />
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbClientOtherCommands" value="set mem inaccessible-by-default off
set architecture riscv:rv32
set remotetimeout unlimited" />
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbClientOtherOptions" value="" />
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerConnectionAddress" value="" />
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerExecutable" value="${eclipse_home}toolchain/OpenOCD/bin/openocd.exe" />
|
||||
<intAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerGdbPortNumber" value="3333" />
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerLog" value="" />
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerOther" value="-f "${eclipse_home}toolchain/OpenOCD/bin/wch-riscv.cfg"" />
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerTclPortNumber" value="6666" />
|
||||
<intAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerTelnetPortNumber" value="4444" />
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.otherInitCommands" value="" />
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.otherRunCommands" value="" />
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.secondResetType" value="halt" />
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.svdPath" value="${eclipse_home}template/wizard/WCH/RISC-V/CH32V307/NoneOS/CH32V307xx.svd" />
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value="" />
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageOffset" value="" />
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.ipAddress" value="localhost" />
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.jtagDevice" value="GNU MCU OpenOCD" />
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="true" />
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadSymbols" value="true" />
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.pcRegister" value="" />
|
||||
<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.portNumber" value="3333" />
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setPcRegister" value="false" />
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="false" />
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true" />
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="handle_reset" />
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value="" />
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value="" />
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForImage" value="false" />
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="false" />
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForImage" value="true" />
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForSymbols" value="true" />
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useRemoteTarget" value="true" />
|
||||
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="${eclipse_home}toolchain/RISC-V Embedded GCC/bin/riscv-none-embed-gdb.exe" />
|
||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false" />
|
||||
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2" />
|
||||
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value="" />
|
||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="obj\TencentOS-Tiny.elf" />
|
||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="TencentOS-Tiny" />
|
||||
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="true" />
|
||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="" />
|
||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doContinue" value="true"/>
|
||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doDebugInRam" value="false"/>
|
||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doFirstReset" value="true"/>
|
||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doGdbServerAllocateConsole" value="true"/>
|
||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doGdbServerAllocateTelnetConsole" value="false"/>
|
||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doSecondReset" value="true"/>
|
||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doStartGdbCLient" value="true"/>
|
||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doStartGdbServer" value="true"/>
|
||||
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.enableSemihosting" value="false"/>
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.firstResetType" value="init"/>
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbClientOtherCommands" value="set mem inaccessible-by-default off set architecture riscv:rv32 set remotetimeout unlimited"/>
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbClientOtherOptions" value=""/>
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerConnectionAddress" value=""/>
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerExecutable" value="${eclipse_home}toolchain/OpenOCD/bin/openocd.exe"/>
|
||||
<intAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerGdbPortNumber" value="3333"/>
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerLog" value=""/>
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerOther" value="-f "${eclipse_home}toolchain/OpenOCD/bin/wch-riscv.cfg""/>
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerTclPortNumber" value="6666"/>
|
||||
<intAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerTelnetPortNumber" value="4444"/>
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.otherInitCommands" value=""/>
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.otherRunCommands" value=""/>
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.secondResetType" value="halt"/>
|
||||
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.svdPath" value="${eclipse_home}template/wizard/WCH/RISC-V/CH32V307/NoneOS/CH32V307xx.svd"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value=""/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageOffset" value=""/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.ipAddress" value="localhost"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.jtagDevice" value="GNU MCU OpenOCD"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="true"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadSymbols" value="true"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.pcRegister" value=""/>
|
||||
<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.portNumber" value="3333"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setPcRegister" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="handle_reset"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value=""/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value=""/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForImage" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="false"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForImage" value="true"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForSymbols" value="true"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useRemoteTarget" value="true"/>
|
||||
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="${eclipse_home}toolchain/RISC-V Embedded GCC/bin/riscv-none-embed-gdb.exe"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
|
||||
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
|
||||
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
|
||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="obj\TencentOS-Tiny.elf"/>
|
||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="TencentOS-Tiny"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="true"/>
|
||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value=""/>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/TencentOS-Tiny" />
|
||||
<listEntry value="/TencentOS-Tiny"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||
<listEntry value="4" />
|
||||
<listEntry value="4"/>
|
||||
</listAttribute>
|
||||
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<memoryBlockExpressionList context="Context string"/>
" />
|
||||
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory" />
|
||||
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList context="Context string"/> "/>
|
||||
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
|
||||
</launchConfiguration>
|
||||
|
|
|
|||
|
|
@ -1,18 +1,18 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<projectDescription>
|
||||
<name>TencentOS-Tiny</name>
|
||||
<comment/>
|
||||
<projects/>
|
||||
<comment />
|
||||
<projects />
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||
<triggers>clean,full,incremental,</triggers>
|
||||
<arguments/>
|
||||
<arguments />
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||
<triggers>full,incremental,</triggers>
|
||||
<arguments/>
|
||||
<arguments />
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
|
|
@ -24,93 +24,43 @@
|
|||
<link>
|
||||
<name>arch</name>
|
||||
<type>2</type>
|
||||
<locationURI>PARENT-2-PROJECT_LOC/arch/risc-v/risc-v3a</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>c-sdk/common</name>
|
||||
<type>2</type>
|
||||
<locationURI>PARENT-2-PROJECT_LOC/components/connectivity/iot-hub-device-c-sdk/common</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>c-sdk/include</name>
|
||||
<type>2</type>
|
||||
<locationURI>PARENT-2-PROJECT_LOC/components/connectivity/iot-hub-device-c-sdk/include</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>c-sdk/platform</name>
|
||||
<type>2</type>
|
||||
<locationURI>PARENT-2-PROJECT_LOC/components/connectivity/iot-hub-device-c-sdk/platform</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>devices/esp8266</name>
|
||||
<type>2</type>
|
||||
<locationURI>PARENT-2-PROJECT_LOC/devices/esp8266</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>devices/esp8266_tencent_firmware</name>
|
||||
<type>2</type>
|
||||
<locationURI>PARENT-2-PROJECT_LOC/devices/esp8266_tencent_firmware</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>fs/fatfs</name>
|
||||
<type>2</type>
|
||||
<locationURI>PARENT-2-PROJECT_LOC/components/fs/fatfs/wrapper</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>fs/kv</name>
|
||||
<type>2</type>
|
||||
<locationURI>PARENT-2-PROJECT_LOC/components/fs/kv</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>fs/vfs</name>
|
||||
<type>2</type>
|
||||
<locationURI>PARENT-2-PROJECT_LOC/components/fs/vfs</locationURI>
|
||||
<location>PARENT-2-PROJECT_LOC/arch/risc-v/risc-v3a</location>
|
||||
</link>
|
||||
<link>
|
||||
<name>kernel/core</name>
|
||||
<type>2</type>
|
||||
<locationURI>PARENT-2-PROJECT_LOC/kernel/core</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>kernel/hal</name>
|
||||
<type>2</type>
|
||||
<locationURI>PARENT-2-PROJECT_LOC/kernel/hal</locationURI>
|
||||
<location>PARENT-2-PROJECT_LOC/kernel/core</location>
|
||||
</link>
|
||||
<link>
|
||||
<name>net/at</name>
|
||||
<type>2</type>
|
||||
<locationURI>PARENT-2-PROJECT_LOC/net/at</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>net/sal_module_wrapper</name>
|
||||
<type>2</type>
|
||||
<locationURI>PARENT-2-PROJECT_LOC/net/sal_module_wrapper</locationURI>
|
||||
<location>PARENT-2-PROJECT_LOC/net/at</location>
|
||||
</link>
|
||||
<link>
|
||||
<name>net/tencent_firmware_module_wrapper</name>
|
||||
<type>2</type>
|
||||
<locationURI>PARENT-2-PROJECT_LOC/net/tencent_firmware_module_wrapper</locationURI>
|
||||
<location>PARENT-2-PROJECT_LOC/net/tencent_firmware_module_wrapper</location>
|
||||
</link>
|
||||
<link>
|
||||
<name>devices/esp8266_tencent_firmware</name>
|
||||
<type>2</type>
|
||||
<location>PARENT-2-PROJECT_LOC/devices/esp8266_tencent_firmware</location>
|
||||
</link>
|
||||
<link>
|
||||
<name>kernel/hal</name>
|
||||
<type>2</type>
|
||||
<location>PARENT-2-PROJECT_LOC/kernel/hal</location>
|
||||
</link>
|
||||
<link>
|
||||
<name>platform/hal/wch/ch32v30xx</name>
|
||||
<type>2</type>
|
||||
<locationURI>PARENT-2-PROJECT_LOC/platform/hal/wch/ch32v30xx/src</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>c-sdk/services/common</name>
|
||||
<type>2</type>
|
||||
<location>PARENT-2-PROJECT_LOC/components/connectivity/iot-hub-device-c-sdk/services/common</location>
|
||||
</link>
|
||||
<link>
|
||||
<name>c-sdk/services/explorer</name>
|
||||
<type>2</type>
|
||||
<location>PARENT-2-PROJECT_LOC/components/connectivity/iot-hub-device-c-sdk/services/explorer</location>
|
||||
<location>PARENT-2-PROJECT_LOC/platform/hal/wch/ch32v30xx/src</location>
|
||||
</link>
|
||||
</linkedResources>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1595986042669</id>
|
||||
<name/>
|
||||
<name />
|
||||
<type>22</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
|
|
|
|||
|
|
@ -1071,8 +1071,8 @@ int16_t Get_CalibrationValue(ADC_TypeDef* ADCx)
|
|||
buf[i] = ADCx->RDATAR;
|
||||
}
|
||||
|
||||
for(i=0; i<9; i++){
|
||||
for(j=0; j<9-i; j++){
|
||||
for(i=0; i<10; i++){
|
||||
for(j=0; j<10; j++){
|
||||
if(buf[j]>buf[j+1]){
|
||||
t=buf[j];
|
||||
buf[j]=buf[j+1];
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ _vector_base:
|
|||
.word 0
|
||||
.word SysTick_Handler /* SysTick */
|
||||
.word 0
|
||||
.word SW_Handler /* SW */
|
||||
.word SW_handler /* SW */
|
||||
.word 0
|
||||
/* External Interrupts */
|
||||
.word WWDG_IRQHandler /* Window Watchdog */
|
||||
|
|
@ -143,7 +143,7 @@ _vector_base:
|
|||
.weak Ecall_U_Mode_Handler /* Ecall U Mode */
|
||||
.weak Break_Point_Handler /* Break Point */
|
||||
.weak SysTick_Handler /* SysTick */
|
||||
.weak SW_Handler /* SW */
|
||||
.weak SW_handler /* SW */
|
||||
.weak WWDG_IRQHandler /* Window Watchdog */
|
||||
.weak PVD_IRQHandler /* PVD through EXTI Line detect */
|
||||
.weak TAMPER_IRQHandler /* TAMPER */
|
||||
|
|
@ -239,7 +239,7 @@ Ecall_M_Mode_Handler: 1: j 1b
|
|||
Ecall_U_Mode_Handler: 1: j 1b
|
||||
Break_Point_Handler: 1: j 1b
|
||||
SysTick_Handler: 1: j 1b
|
||||
SW_Handler: 1: j 1b
|
||||
SW_handler: 1: j 1b
|
||||
WWDG_IRQHandler: 1: j 1b
|
||||
PVD_IRQHandler: 1: j 1b
|
||||
TAMPER_IRQHandler: 1: j 1b
|
||||
|
|
|
|||
|
|
@ -13,7 +13,8 @@
|
|||
|
||||
#define TOS_CFG_OBJECT_VERIFY 1u
|
||||
|
||||
#define TOS_CFG_OBJ_DYNAMIC_CREATE_EN 1u
|
||||
#define TOS_CFG_TASK_DYNAMIC_CREATE_EN 1u
|
||||
|
||||
|
||||
#define TOS_CFG_EVENT_EN 1u
|
||||
|
||||
|
|
@ -23,7 +24,7 @@
|
|||
|
||||
#define TOS_CFG_MMHEAP_DEFAULT_POOL_EN 1u
|
||||
|
||||
#define TOS_CFG_MMHEAP_DEFAULT_POOL_SIZE 0x8000
|
||||
#define TOS_CFG_MMHEAP_DEFAULT_POOL_SIZE 0x3000
|
||||
|
||||
#define TOS_CFG_MAIL_QUEUE_EN 1u
|
||||
|
||||
|
|
@ -43,7 +44,7 @@
|
|||
|
||||
#define TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN 0u
|
||||
|
||||
#define TOS_CFG_CPU_SYSTICK_PRIO 0xF0 //V307<EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>Ч
|
||||
#define TOS_CFG_CPU_SYSTICK_PRIO 0xF0 //V307优先级高四位有效
|
||||
|
||||
|
||||
#define TOS_CFG_IDLE_TASK_STK_SIZE 512u
|
||||
|
|
|
|||
|
|
@ -8,11 +8,12 @@
|
|||
#include "ch32v30x_it.h"
|
||||
#include "tos_k.h"
|
||||
#include "tos_at.h"
|
||||
|
||||
extern at_agent_t esp8266_tf_agent;
|
||||
extern at_agent_t esp8266_agent;
|
||||
|
||||
void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
|
||||
void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
|
||||
|
||||
void USART2_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
|
||||
void UART6_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
|
||||
void UART7_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
|
||||
|
|
@ -77,7 +78,7 @@ void UART6_IRQHandler(void)
|
|||
if(USART_GetITStatus(UART6, USART_IT_RXNE) != RESET)
|
||||
{
|
||||
data= USART_ReceiveData(UART6);
|
||||
tos_at_uart_input_byte(&esp8266_agent,data);
|
||||
tos_at_uart_input_byte(&esp8266_tf_agent,data);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,229 +7,56 @@
|
|||
*******************************************************************************/
|
||||
#include "debug.h"
|
||||
#include "tos_k.h"
|
||||
#include "sdio.h"
|
||||
#include "lcd_init.h"
|
||||
#include "lcd.h"
|
||||
#include "pic.h"
|
||||
#include "spi_flash.h"
|
||||
|
||||
void led_key_init(void)
|
||||
|
||||
void led_init(void)
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStructure = {0};
|
||||
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOA, ENABLE);
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_Init(GPIOE, &GPIO_InitStructure);
|
||||
GPIO_SetBits(GPIOE,GPIO_Pin_2);
|
||||
GPIO_SetBits(GPIOE,GPIO_Pin_3);
|
||||
GPIO_SetBits(GPIOE,GPIO_Pin_4);
|
||||
GPIO_SetBits(GPIOE,GPIO_Pin_5);
|
||||
/* key 1 2 3 */
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_8;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
}
|
||||
#define TASK1_STK_SIZE 1024
|
||||
k_task_t task1;
|
||||
__aligned(4) uint8_t task1_stk[TASK1_STK_SIZE];
|
||||
|
||||
uint8_t get_key(void)
|
||||
{
|
||||
uint16_t value=0;
|
||||
if((GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) & GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)\
|
||||
& GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)) == 0 )
|
||||
{
|
||||
Delay_Ms(15);
|
||||
if((GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) & GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)\
|
||||
& GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)) == 0 )
|
||||
{
|
||||
value= GPIO_ReadInputData(GPIOA);
|
||||
if((value&0x1)==0) return 1;
|
||||
else if((value&0x2)==0)return 2;
|
||||
else if((value&0x100)==0) return 3;
|
||||
else return 0;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void lcd_test()
|
||||
{
|
||||
u8 i,j;
|
||||
float t=0;
|
||||
#define TASK2_STK_SIZE 1024
|
||||
k_task_t task2;
|
||||
__aligned(4) uint8_t task2_stk[TASK2_STK_SIZE];
|
||||
|
||||
LCD_ShowString(0,0,"Welcome TencentOS",WHITE,BLACK,32,0);
|
||||
LCD_ShowString(0,40,"LCD_W:",WHITE,BLACK,16,0);
|
||||
LCD_ShowIntNum(48,40,LCD_W,3,WHITE,BLACK,16);
|
||||
LCD_ShowString(80,40,"LCD_H:",WHITE,BLACK,16,0);
|
||||
LCD_ShowIntNum(128,40,LCD_H,3,WHITE,BLACK,16);
|
||||
LCD_ShowString(80,40,"LCD_H:",WHITE,BLACK,16,0);
|
||||
LCD_ShowString(0,70,"Increaseing Nun:",WHITE,BLACK,16,0);
|
||||
LCD_ShowFloatNum1(128,70,t,4,WHITE,BLACK,16);
|
||||
t+=0.11;
|
||||
for(j=0;j<3;j++)
|
||||
{
|
||||
for(i=0;i<6;i++)
|
||||
{
|
||||
LCD_ShowPicture(40*i,120+j*40,40,40,gImage_1);
|
||||
}
|
||||
}
|
||||
printf("lcd test finish\r\n");
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* @fn show_sdcard_info
|
||||
*
|
||||
* @brief SD Card information.
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
void show_sdcard_info(void)
|
||||
{
|
||||
switch(SDCardInfo.CardType)
|
||||
{
|
||||
case SDIO_STD_CAPACITY_SD_CARD_V1_1:printf("Card Type:SDSC V1.1\r\n");break;
|
||||
case SDIO_STD_CAPACITY_SD_CARD_V2_0:printf("Card Type:SDSC V2.0\r\n");break;
|
||||
case SDIO_HIGH_CAPACITY_SD_CARD:printf("Card Type:SDHC V2.0\r\n");break;
|
||||
case SDIO_MULTIMEDIA_CARD:printf("Card Type:MMC Card\r\n");break;
|
||||
}
|
||||
printf("Card ManufacturerID:%d\r\n",SDCardInfo.SD_cid.ManufacturerID);
|
||||
printf("Card RCA:%d\r\n",SDCardInfo.RCA);
|
||||
printf("Card Capacity:%d MB\r\n",(u32)(SDCardInfo.CardCapacity>>20));
|
||||
printf("Card BlockSize:%d\r\n\r\n",SDCardInfo.CardBlockSize);
|
||||
}
|
||||
const u8 TEXT_Buf[]={"CH32V307 SPI FLASH W25Qxx"};
|
||||
void spi_flash_test(void)
|
||||
{
|
||||
u8 datap[SIZE];
|
||||
u16 Flash_Model;
|
||||
// SPI_Flash_Init();
|
||||
Delay_Ms(50);
|
||||
|
||||
Flash_Model = SPI_Flash_ReadID();
|
||||
|
||||
switch(Flash_Model)
|
||||
{
|
||||
case W25Q80:
|
||||
printf("W25Q80 OK!\r\n");
|
||||
break;
|
||||
|
||||
case W25Q16:
|
||||
printf("W25Q16 OK!\r\n");
|
||||
break;
|
||||
|
||||
case W25Q32:
|
||||
printf("W25Q32 OK!\r\n");
|
||||
break;
|
||||
|
||||
case W25Q64:
|
||||
printf("W25Q64 OK!\r\n");
|
||||
break;
|
||||
|
||||
case W25Q128:
|
||||
printf("W25Q128 OK!\r\n");
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("Fail!\r\n");
|
||||
break;
|
||||
}
|
||||
printf("Start Read W25Qxx before erase....\r\n");
|
||||
SPI_Flash_Read(datap,0x0,SIZE);
|
||||
for(int16_t i=0;i<SIZE;i++)
|
||||
{
|
||||
printf("%x ", datap[i] );
|
||||
}
|
||||
printf("\r\n" );
|
||||
|
||||
printf("Start Erase W25Qxx....\r\n");
|
||||
SPI_Flash_Erase_Sector(0);
|
||||
|
||||
Delay_Ms(500);
|
||||
|
||||
printf("Start Read W25Qxx....\r\n");
|
||||
SPI_Flash_Read(datap,0x0,SIZE);
|
||||
for(int16_t i=0;i<SIZE;i++)
|
||||
{
|
||||
printf("%x ", datap[i] );
|
||||
}
|
||||
printf("\r\n" );
|
||||
|
||||
Delay_Ms(500);
|
||||
|
||||
printf("Start Write W25Qxx....\r\n");
|
||||
SPI_Flash_Write((u8*)TEXT_Buf,0,SIZE);
|
||||
|
||||
Delay_Ms(500);
|
||||
|
||||
SPI_Flash_Read(datap,0x0,SIZE);
|
||||
printf("%s\r\n", datap );
|
||||
|
||||
if(memcmp(TEXT_Buf, datap, SIZE))
|
||||
{
|
||||
LCD_ShowString(16,16+16+16,"SPI Flash: Fail",WHITE,BLACK,16,0);
|
||||
}
|
||||
else
|
||||
{
|
||||
LCD_ShowString(16,16+16+16,"SPI Flash: OK",WHITE,BLACK,16,0);
|
||||
}
|
||||
}
|
||||
|
||||
u8 buf[512];
|
||||
u8 Readbuf[512];
|
||||
|
||||
/* sdcard test */
|
||||
void SD_Card_test(void)
|
||||
{
|
||||
u32 i;
|
||||
u32 Sector_Nums;
|
||||
|
||||
while(SD_Init())
|
||||
{
|
||||
printf("SD Card Error!\r\n");
|
||||
delay_ms(1000);
|
||||
}
|
||||
|
||||
show_sdcard_info();
|
||||
|
||||
printf("SD Card OK\r\n");
|
||||
Sector_Nums = ((u32)(SDCardInfo.CardCapacity>>20))/2;
|
||||
printf("Sector_Nums:%d\r\n", Sector_Nums);
|
||||
|
||||
for(i=0; i<512; i++){
|
||||
buf[i] = i;
|
||||
}
|
||||
|
||||
for(i=0; i<Sector_Nums/2; i++)
|
||||
{
|
||||
if(SD_WriteDisk(buf,i,1)) {printf("Wr %d sector fail\n", i);}
|
||||
if(SD_ReadDisk(Readbuf,i,1)){ printf("Rd %d sector fail\n", i);}
|
||||
|
||||
if(memcmp(buf, Readbuf, 512))
|
||||
{
|
||||
printf(" %d sector Verify fail\n", i);
|
||||
LCD_ShowString(16,16+16+16+16,"SD Sector:FAIL",WHITE,BLACK,16,0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(i==Sector_Nums/2)
|
||||
{
|
||||
LCD_ShowString(16,16+16+16+16+16,"SD: OK",WHITE,BLACK,16,0);
|
||||
printf("SD OK\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
LCD_ShowString(16,16+16+16+16+16,"SD ALL: FAIL",WHITE,BLACK,16,0);
|
||||
}
|
||||
}
|
||||
|
||||
#define APPLICATION_TASK_STK_SIZE 4096
|
||||
k_task_t application_task;
|
||||
__aligned(4) uint8_t application_task_stk[APPLICATION_TASK_STK_SIZE];
|
||||
|
||||
extern void application_entry(void *arg);
|
||||
extern void application_entry1(void *arg);
|
||||
|
||||
void task1_entry(void *arg)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
printf("###I am task1\r\n");
|
||||
tos_task_delay(2000);
|
||||
}
|
||||
}
|
||||
|
||||
void task2_entry(void *arg)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
printf("***I am task2\r\n");
|
||||
tos_task_delay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
volatile uint8_t key=0;
|
||||
/*******************************************************************************
|
||||
* Function Name : main
|
||||
* Description : Main program.
|
||||
|
|
@ -238,41 +65,51 @@ volatile uint8_t key=0;
|
|||
*******************************************************************************/
|
||||
int main(void)
|
||||
{
|
||||
u8 i,j;
|
||||
float t=0;
|
||||
Delay_Init();
|
||||
USART_Printf_Init(115200);
|
||||
printf("SystemClk:%d\r\n",SystemCoreClock);
|
||||
led_key_init();
|
||||
LCD_Init();
|
||||
SPI_Flash_Init();
|
||||
printf("Welcome to TencentOS tiny(%s)\r\n", TOS_VERSION);
|
||||
LCD_Fill(0,0,LCD_W,LCD_H,BLACK);
|
||||
LCD_ShowString(0,0,"Welcome to TencentOS",WHITE,BLACK,16,0);
|
||||
led_init();
|
||||
LCD_Init();//LCD³õʼ»¯
|
||||
LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
|
||||
|
||||
printf("Welcome to TencentOS tiny(%s)\r\n", TOS_VERSION);
|
||||
LCD_ShowString(0,0,"Welcome to TencentOS",RED,WHITE,16,0);
|
||||
tos_knl_init();
|
||||
tos_task_create(&application_task, "application_task", application_entry, NULL, 4, application_task_stk, APPLICATION_TASK_STK_SIZE, 0);
|
||||
tos_task_create(&application_task, "application_task", application_entry1, NULL, 4, application_task_stk, APPLICATION_TASK_STK_SIZE, 0);
|
||||
//tos_task_create(&task1, "task1", task1_entry, NULL, 3, task1_stk, TASK1_STK_SIZE, 0); // Create task1
|
||||
//tos_task_create(&task2, "task2", task2_entry, NULL, 3, task2_stk, TASK2_STK_SIZE, 0);// Create task2
|
||||
tos_knl_start();
|
||||
|
||||
printf("should not run at here!\r\n");
|
||||
while(!key)
|
||||
{
|
||||
key=get_key();
|
||||
}
|
||||
|
||||
switch(key)
|
||||
{
|
||||
case 1:
|
||||
lcd_test();
|
||||
break;
|
||||
case 2:
|
||||
LCD_Fill(0,0,LCD_W,LCD_H,BLACK);
|
||||
spi_flash_test();
|
||||
SD_Card_test();
|
||||
break;
|
||||
case 3:
|
||||
LCD_Fill(0,0,LCD_W,LCD_H,BLACK);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
while(1);
|
||||
while(1)
|
||||
{
|
||||
LCD_ShowString(0,0,"Welcome TencentOS",RED,WHITE,32,0);
|
||||
LCD_ShowString(0,40,"LCD_W:",RED,WHITE,16,0);
|
||||
LCD_ShowIntNum(48,40,LCD_W,3,RED,WHITE,16);
|
||||
LCD_ShowString(80,40,"LCD_H:",RED,WHITE,16,0);
|
||||
LCD_ShowIntNum(128,40,LCD_H,3,RED,WHITE,16);
|
||||
LCD_ShowString(80,40,"LCD_H:",RED,WHITE,16,0);
|
||||
LCD_ShowString(0,70,"Increaseing Nun:",RED,WHITE,16,0);
|
||||
LCD_ShowFloatNum1(128,70,t,4,RED,WHITE,16);
|
||||
t+=0.11;
|
||||
for(j=0;j<3;j++)
|
||||
{
|
||||
for(i=0;i<6;i++)
|
||||
{
|
||||
LCD_ShowPicture(40*i,120+j*40,40,40,gImage_1);
|
||||
printf("pic test\r\n");
|
||||
}
|
||||
}
|
||||
printf("lcd test\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue