I can endorse following the ISO12207 life-cycle model referred to above
Specifically, to answer the question though, the IEEE are the answer with IEEE Std 830-1998 - this is written with 12207 in mind
@Peter is quite dismissive of ISO12207, but for anything safety critical, documentation is paramount... but I accept for many applications it will be OTT.
Update 2012-11-12
Re-reading the question, ISO12207 is the Software Development Life-Cycle process model which covers all phases (as does CMMI)... the question specifically asks about writing a functional specification.
There is, naturally, an ISO standard for that too: ISO/IEC/IEEE 29148:2011 Systems and software engineering -- Life cycle processes -- Requirements engineering, quoting the Abstract:
ISO/IEC/IEEE 29148:2011 contains provisions for the processes and
products related to the engineering of requirements for systems and
software products and services throughout the life cycle. It defines
the construct of a good requirement, provides attributes and
characteristics of requirements, and discusses the iterative and
recursive application of requirements processes throughout the life
cycle.
ISO/IEC/IEEE 29148:2011 provides additional guidance in the
application of requirements engineering and management processes for
requirements-related activities in ISO/IEC 12207:2008 and ISO/IEC
15288:2008.
Information items applicable to the engineering of requirements and
their content are defined. The content of ISO/IEC/IEEE 29148:2011 can
be added to the existing set of requirements-related life cycle
processes defined by ISO/IEC 12207:2008 or ISO/IEC 15288:2008, or can
be used independently.