- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
下面的代码与 MCU 中 RTC 的初始化有关。
有人知道将 NULL
传递给 rtc_init()
然后设置全局回调 global_rtc_cb
等于它的合理性吗?
当结构中定义了另一个名为 rtc_callback
的函数并将其用作回调时,为什么还要使用全局回调。
int main() {
rtc_init(NULL);
}
//-----------------------------------------------------------------
void ( * global_rtc_cb)(void *);
int rtc_init(void (*cb)(void *)) {
rtc_config_t cfg;
cfg.init_val = 0;
cfg.alarm_en = true;
cfg.alarm_val = ALARM;
cfg.callback = rtc_callback;
cfg.callback_data = NULL;
global_rtc_cb = cb;
irq_request(IRQ_RTC_0, rtc_isr_0);
clk_periph_enable(CLK_PERIPH_RTC_REGISTER | CLK_PERIPH_CLK);
rtc_set_config(QM_RTC_0, &cfg);
return 0;
}
//---------------------------------------------------------------------
/**
* RTC configuration type.
*/
typedef struct {
uint32_t init_val; /**< Initial value in RTC clocks. */
bool alarm_en; /**< Alarm enable. */
uint32_t alarm_val; /**< Alarm value in RTC clocks. */
/**
* User callback.
*
* @param[in] data User defined data.
*/
void (*callback)(void *data);
void *callback_data; /**< Callback user data. */
} rtc_config_t;
最佳答案
rtc_
函数是 RTC 驱动程序的一部分。当提示回调的事件发生时,RTC 驱动程序有一些特定于驱动程序的事情要做。此特定于驱动程序的内容发生在 rtc_callback
中。但是,当事件发生时,应用程序可能还必须执行其他特定于应用程序的事情。特定于应用程序的事情应该在应用程序层完成,而不是在驱动程序中。因此,如果应用程序需要做一些事情来响应事件,它可以向 rtc_init
提供回调。 rtc_callback
肯定会调用 global_rtc_cb
,以便在事件发生时执行特定于驱动程序的内容和特定于应用程序的内容。显然,您的特定应用程序不需要为此事件做任何事情,因此它将 NULL 传递给 rtc_init
。但是使用相同驱动程序的不同应用程序可能会提供回调函数。
关于c - MCU 中的 RTC 初始化 - 为什么使用全局回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40503304/
我有一段代码看起来像这样: void update_clock(uint8_t *time_array) { time_t time = *((time_t *) &time_array[0]
我有一 block 带有特殊 UEXT connector 的 Olimex A20 板它可以连接 SPI、I2C 和 RS 232。我喜欢使用 Olimex 的 MOD Zigbee 模块直接通过
我有一个在基于 ARM Cortex-M 的 MCU 上运行并用 C 和 C++ 编写的应用程序。我用 gcc和 g++编译它并希望完全禁用任何堆使用。 在 MCU 启动文件中,堆大小已设置为 0。除
我目前正在学习微 Controller 和处理器,我对两者之间的一些区别有一些疑问。据我了解,MCU 包含一个实现处理器架构的处理器。例如,我正在使用 SAML22 微 Controller ,其处理
有很多类似的问题,但似乎没有一个问题完全相同。我正在将 STML4 MCU 连接到 6 轴传感器 (LSM6DS3)。我已经成功地在 I2C 中实现了所有内容,但想要 SPI 的额外速度(和 DMA,
我正在尝试将部分二进制文件的 md5 哈希值插入到二进制文件中,以跟踪 MCU 固件版本。 我是这样处理的:在链接脚本中,我将 Flash 分成两部分 MEMORY
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 6 年前。 Improve this qu
我正在尝试弄清楚如何为我的 C8051F020 MCU 创建一个定时器。以下代码使用通过以下公式传递给 init_Timer2() 的值: 65535-(0.1/(12/2000000)=48868。
我之前有编写基于事件和轮询的嵌入式系统的经验(适用于没有抢占式操作系统的微型 MCU)。 在基于事件的系统中,任务通常在队列上接收事件(消息)并依次处理它们。 在基于轮询的系统中,任务以一定的时间间隔
我是 python 的新手,我正在使用 2.7 和 spyder 我有一个运行这个的 anduino 风格的板子: void setup() { Serial1.begin(115200); }
我是 python 的新手,我正在使用 2.7 和 spyder 我有一个运行这个的 anduino 风格的板子: void setup() { Serial1.begin(115200); }
我想使用JAVA提取JPEG文件的各个MCU。我在JPEG header 中找不到有关MCU的信息。信息如下:JPEg的MCU大小是8x8、16x8、8x16还是16x16?或提取单个 MCU 所需的
我正在致力于将字节数组的内容从 Android 移动应用程序传输到 MCU。我能够成功地逐字节传输数据(多个数据包),但无法成功发送整个数组(作为一个数据包)。应该注意的是,数据将通过 GATT 配置
我正在从事一个项目,该项目涉及让 FreeRTOS 的 CMSIS-RTOS 打包在 STM32F051C6 上运行。我在 Visual Studio 中使用 VisualGDB 编写和调试代码,并使
下面的代码是如何在单片机上使用实时时钟的示例。 我的问题与回调和函数指针有关。 我在下面包含了 rtc_config_t 的结构声明。 我的问题是,在线 cfg.callback = rtc_exam
在我看来,MCU RAM 包含链接器值、全局范围变量、堆、堆栈,然后某些部分未使用。 因此,工程师是否倾向于发布固件,使一些 MCU RAM 未被使用,因为应用程序不需要它来运行? 最佳答案 这取决于
这里是新手。我目前正在从事一个涉及在 MCU(NUC200LE3AN) 闪存上保存密码的项目。 这些代码工作得很好。写入后,即使在 MCU 重新启动后,我也能够读取 user_password1 的确
简介:我设计了一个带有 ATSAME54N20A 的嵌入式系统。 32 位 ARM® Cortex®-M4F MCU。该板将很快组装好并准备好进行编程,因此我正在设置我的编程环境。我选择了一个简单的解
我只是尝试使用 Scott Meyers 在“Effectice C++ in an Embedded Environment”中建议的 placement new 运算符。 DefaultM
我有一个带有集成和可自定义聊天系统(基于 XMPP)的网站。 我尝试过很多 WebRTC 框架,比如 licode , muaz-khan's , jinja 的插件, OpenTok对于 WebRT
我是一名优秀的程序员,十分优秀!