type
status
date
slug
summary
tags
category
icon
password
IO控制
Dio_WriteChannel(DioConf_DioChannel_PTB13_SPI1_CS1, STD_LOW);
DIO(数字输入输出)驱动代码:
这是一个典型的AUTOSAR架构下的DIO驱动实现,主要功能是控制单个GPIO引脚的输出状态。代码包含了完整的参数检查机制,并支持用户模式和特权模式的调用。
#define DioConf_DioChannel_PTB13_SPI1_CS1 (((1U << 8U) + 13U))
让我来解释这个宏定义:
(1U << 8U) + 13U 的计算过程:
- 1U << 8U 表示将1向左移动8位,结果是256 (0x100)
- 13U 就是13 (0xD)
- 最终结果是 256 + 13 = 269 (0x10D)
这个值的构成:高8位表示端口号(1表示PORTB),低8位表示引脚号(13)。
如果你要自己定义一个宏来控制其他IO,可以按照这个格式:
端口号对应关系:
PORTA = 0, PORTB = 1, PORTC = 2, PORTD = 3, PORTE = 4
使用示例:
Dio_FlipChannel(DioConf_DioChannel_PTB10_IC2_EN1);
Dio_ReadChannel(DioConf_DioChannel_PTA10_IN_L_R);
定时器
Gpt_StartTimer(0,40000);//1ms for timer
AUTOSAR架构下的GPT(通用定时器)驱动代码:
这段代码主要实现以下功能:
- 进行完整的错误检查:驱动初始化状态、通道有效性、定时值合法性
- 支持开发时错误检测功能(通过GPT_DEV_ERROR_DETECT宏控制)
- 检查定时器是否已在运行,避免重复启动
- 最后调用底层函数实际启动定时器
这是典型的AUTOSAR分层架构实现,通过严格的参数检查和错误处理来保证软件的可靠性。
定时器通知
Gpt_EnableNotification(0);
SPI
SPI设置函数
Spi_SetupEB(SpiConf_SpiSequence_SpiSequence_0_CC1, &Spi_TxData[0], &Spi_RxData[0], 10);
SPI异步模式的函数
Spi_SetAsyncMode(SPI_POLLING_MODE);
SPI同步传输函数
Spi_SyncTransmit(SpiConf_SpiSequence_SpiSequence_0_CC1);
#define SpiConf_SpiSequence_SpiSequence_0_CC1 ((Spi_SequenceType)0U)
sub:SPI底层接口
Spi_Lld_SyncTransmit(Sequence);
与MCU强相关不做详细描述
SPI执行状态获取
Spi_GetSequenceResult(SpiConf_SpiSequence_SpiSequence_0_CC1)
有文字内容详情不解或业务合作的可以通过以下方式联系本人:微信号:kmkadagarm(请注明称呼与来意)
- 作者:Knight
- 链接:https://www.ale-tech.cn//article/MCAL
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。









